VBA不關心自動過濾器,除非您「告訴」自動過濾器或正在嘗試執行可能受自動過濾器影響的操作。
您的以上代碼將適用於任何工作表,而不僅僅是「輸入」工作表。
這裏是它精美的作品(其實我用它所有的時間)的另一種方法
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
'~~> Filter, offset(to exclude headers) and delete visible rows
With rRange
.AutoFilter Field:=1, Criteria1:=strCriteria
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
這裏是當它不工作的情況。
圖表不顯示被Autofilter過濾的數據。但是,圖表也不會顯示隱藏行中的數據。 這適用於顯示圖表中的數據的VBA和非VBA方法。
,但如果我嘗試在其中應用autofiler特定細胞寫的食堂了。
這取決於你是如何以及在何處寫它。
這很好用。請注意,在下面的代碼中,行已被過濾並且不可見。但是,我們仍然可以寫信給它。
Option Explicit
Sub Sample()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1")
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
rng.Offset(1, 0).Value = "Sidd"
End Sub
現在讓我們來看另一個例子。 這不起作用。假設你有一個從A2到A10的範圍(A1有Header),它有各種不同的取值範圍,從1到3.現在你想用A2取代A2:A10中的所有值。這個代碼不會給你預期的輸出if有一個自動過濾器。它不會改變所有的細胞。
Option Explicit
Sub Sample()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1:A10")
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
rng.Value = "1000"
End Sub
爲什麼它忽略其中有「1」(即對被濾除行)和寫入行的其餘部分的細胞?事實上,它與頭部混淆以及?
這是相當簡單的。擁有Autofilter的想法是根據我們的要求獲得相關數據(目前它的數據是<> 1)。當您寫入範圍rng
時,它將寫入該範圍內所有可見的單元格(包括具有標題的單元格)。
那麼我們在這種情況下做什麼?
你有兩個選擇
1)刪除自動篩選 - 做了必要的行動 - 將過濾備用
Sub Sample()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1:A10")
'~~> Put Filter
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
'~~> Remove Filter
ActiveSheet.AutoFilterMode = False
'~~> Write value to the cells (See how we ignore the header)
Sheets("Sheet1").Range("A2:A10").Value = "1000"
'~~> Put Filter back
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
End Sub
2)循環,你在做的範圍內的問題
Sub Sample()
Dim rng As Range, cl As Range
Set rng = Sheets("Sheet2").Range("A1:A10")
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
For Each cl In rng
'~~> Ignoring the Header
If cl.Row <> 1 then _
cl.Value = "1000"
Next
End Sub
W當你運行上面的代碼時,它會寫入除標題外的所有單元格。
我建議您閱讀Excel的內置幫助,以瞭解AutoFilters的實際工作方式。這可以幫助您瞭解它們,從而幫助您處理打開Autofilter的工作表。
HTH
當你在它,定義「攪亂」,以及... – 2012-04-24 06:33:51
過濾行不神奇消失定義「照顧」 ...... - 如果你想要遍歷throught visibe細胞,谷歌「VBA可見細胞」,例如...我不知道寫入隱藏的單元格,但如果這是一個問題,你也可以谷歌「VBA清除自動過濾器」,你知道.. – Aprillion 2012-04-24 06:44:39
我的查詢基本上是用戶可以使用自動過濾器來隱藏和取消隱藏輸入和輸出表單(爲了使數據更清晰,他會這樣做)...但我不想vba關心自動過濾器,它應該像沒有任何東西一樣工作... – 2012-04-24 08:08:08