我已經創建了一個宏,它爲當前選擇添加了一個前綴。這很簡單,就像你看到的那樣 - 它通過選擇中的可見單元循環。我添加了.SpecialCells(xlCellTypeVisible)
,因爲它在使用過濾器時會影響非預期的單元格。使用Selection.SpecialCells(xlCellTypeVisible)時,未選中的單元格受到影響'
Sub Prefix()
Dim rng As Range
Dim Prefix As String
Prefix = "P"
For Each rng In Selection.SpecialCells(xlCellTypeVisible)
rng = Prefix & rng
Next rng
End Sub
舉個例子,假設我的數據是Cells A1:A4
填寫這樣的:
- 的範圍內把一個
Autofilter
:Title 1 2 1
當我做下面出現我的問題,並隱藏A3中的'2'
- 選擇A2(第一個'1')
- 運行我的微距
的問題是,而不是隻影響Cell A2
(所選單元格),它會自動跳過前綴爲第一行(A1:Z1等),直到我取消宏。如果我讓它繼續運行,它將繼續對數千個單元執行此操作。
當我的選擇是多個單元格時,或者如果我使用Selection
而不是Selection.SpecialCells(xlCellTypeVisible)
,或者在沒有任何內容被過濾出(隱藏)時將宏應用於一個單元格,則不會發生此問題。
有沒有人有任何想法,爲什麼選擇默認爲整個電子表格,當我只有一個單元格選擇?
另外,任何人都可以提出一種方法來添加這樣的前綴使用VBA?
我知道使用excel公式可以緩解這個問題,但這對我來說並不實用,而且不會像點擊宏那麼快。
很可能是因爲您的小組不知道選擇是什麼,所以它使用整個工作表。爲您想要的範圍添加一個範圍參數並將其傳遞給子。用該參數替換選擇,它應該工作。 – dinotom
請你可以通過添加範圍參數來解釋你的意思嗎?我知道我可以運行該子程序來處理Range(「a2:a4」)。SpecialCells(xlCellTypeVisible)或類似的東西,但我希望能夠在選擇時使用它,而不是每次都編輯宏。我可能適用於連續10個不同的選擇,因此不值得每次編輯宏代碼。 – unknownengines
如果您希望它能像那樣工作,它必須位於工作表選擇更改事件中。我會很快發帖 – dinotom