0
我試圖寫一個宏來執行以下操作後,選擇除頭部所有過濾行:Excel VBA中自動篩選
- 從工作表Sheet1監視數據I輸入的A柱;
- 當我在A列的單元格中寫入內容時,使用該值來過濾Sheet2;
- 過濾完成後,即使有多個值,也會將第二張表格中除列標題以外的所有內容複製到第一張表格中。
我試着寫這樣的:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A:A")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
copy_filter Target
End If
End Sub
Sub copy_filter(Changed)
Set sh = Worksheets("Sheet2")
sh.Select
sh.Range("$A$1:$L$5943") _
.AutoFilter Field:=3, _
Criteria1:="=" & Changed.Value, _
VisibleDropDown:=False
Set rang = sh.Range("$A$1:$L$5943") _
.SpecialCells(xlCellTypeVisible)
rang.Offset(0, 0).Select
Selection.Copy
Worksheets("Sheet1").Select
Worksheets("Sheet1").Range(Changed.Address).Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
sh.Range("$A$1:$L$5943").AutoFilter
Application.CutCopyMode = False
End Sub
然而,當我複製標題行被複制以及選擇,但使用.Offset(1,0)切頭和1個排,沒有按沒有考慮到過濾器沒有返回結果的情況。
如何選擇除標題以外的每個過濾行?
如何使你的代碼,走的是OP的這項要求'•當我寫在A列的單元格的東西使用該值來過濾Sheet2;'我不太明白它可能沒有工作表變化事件。 – skkakkar
我沒有包含OP的工作表更改事件,因爲不需要重構。 copy_filter(Changed)仍將以相同的方式調用。 – 2016-07-25 13:27:08
謝謝澄清。 – skkakkar