返回列表 上一主題 發帖

[發問] 如何讓執行巨集的範圍,剛好在這一次複製的範圍內

[發問] 如何讓執行巨集的範圍,剛好在這一次複製的範圍內

想請教各位
我寫了一個巨集
Sub test()
Selection.PasteSpecial xlPasteValuesAndNumberFormats
Range("B2").Replace What:="/", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

每次使用巨集前
我會先用滑鼠選擇我要複製的範圍(每次範圍都不一樣)
再用滑鼠點選到我要複製的目地欄位A2,然後啟動巨集
第一次可以用,但第二次就不行
因為我如果目地變A5或其他地方,這個巨集卻只會改變B2範圍,而不是我要的B5範圍或其他地方範圍

我曾嘗試把
Range("B2").Replace What:="/", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

改為 Range("B:B")  但程式卻把整個B欄位都取代 (這不是我想要的)

我希望 如果複製Range(" A2:G2"),程式可以幫我只改Range("B2")
                 或複製Range(" A5:G10"),程式可以幫我只改Range("B5:B10")

想請教各位,我這一段B欄位要如何修改,才可以剛好只落在我這一次複製的範圍內
謝謝

因該是類似Range("B65536").End(xlUp).Copy

TOP

回復 2# pupai
是這樣媽?
  1. Option Explicit
  2. Sub test()
  3.     Dim Rng As Range
  4.     Selection.PasteSpecial xlPasteValuesAndNumberFormats
  5.     Set Rng = Selection
  6.     Range("B" & Rng.Row).Resize(Rng.Rows.Count).Replace What:="/", Replacement:="", LookAt:=xlPart, _
  7.         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  8.         ReplaceFormat:=False
  9. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

With Selection
   .PasteSpecial xlPasteValuesAndNumberFormats
   .Columns(2).Replace "/", "", LookAt:=xlPart
End With

TOP

這樣複雜 有沒有簡化版
謝謝

TOP

回復 4# 准提部林


准大好
你的方式比較適合我
想再請教 同樣的道理 這一次我希望日期轉換
請教.Columns(2)我要如何修改  謝謝
Selection.TextToColumns Destination:=Selection, DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 10), TrailingMinusNumbers:=True

TOP

回復 3# GBKEE


   G大
你的方法,我還要努力中
謝謝

TOP

回復 6# pupai


With Selection
   .PasteSpecial xlPasteValuesAndNumberFormats
   With .Columns(2)
      .Replace "//", "", LookAt:=xlPart
      .TextToColumns Destination:=Selection, DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 10), TrailingMinusNumbers:=True
   End With
End With

大約串文字碼,請自行測試!

TOP

回復 8# 准提部林

准大好
Columns(2)只可以幫我改一個儲存格
但是我希望 如果複製Range(" A2:G2"),程式可以幫我只改Range("B2")
                 或複製Range(" A5:G10"),程式可以幫我只改Range("B5:B10")
請教我要如何修改
謝謝

TOP

回復 9# pupai
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng As Range
  4.     Selection.PasteSpecial xlPasteValuesAndNumberFormats
  5.     Set Rng = Selection
  6.      With Range("B" & Rng.Row).Resize(Rng.Rows.Count)
  7.             .Cells.TextToColumns Destination:=.Cells, TextQualifier:=xlNone, DataType:=xlDelimited, _
  8.             ConsecutiveDelimiter:=True, FieldInfo:=Array(1, 5), TrailingMinusNumbers:=True
  9.     End With
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題