私はしばらくの間これに苦しんでおり、どこで間違っているのか知りたいと思います。 いくつかのソースデータがあり、最後の列(AG)は一部の列にN/Aがあるかどうかを評価するExcel関数です。 「はい」の場合は「エラー」、それ以外の場合は「いいえ」と表示されます。 私のコードでは、マクロを列RのAGを式に塗りつぶして(うまくいく)、フィルタリングされたエラーがあるかどうかを評価したいと思います。いくつかのエラーがある場合、私はそれを停止したいので(ユーザーにはフィルタリングされたエラーが表示されます)、「OK」だけがあれば、すべての値(フィルタなし)を表示したいと思います。ここ は私のコードである:VBAフィルタに値が表示されない/表示されない場合
Sub macro()
With Worksheets("Source")
LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
End With
Sheets("Source").Select
Range("R2:AG2").Select
Selection.AutoFill Destination:=Range("R2:AG" & LastRow)
ActiveSheet.Range("$A$1:$AG$" & LastRow).AutoFilter Field:=33, Criteria1:="error"
Counter = Range("$A$1:$AG$" &
LastRow).SpecialCells(xlCellTypeVisible).Rows.Count
If Counter = 1 Then
ActiveSheet.Range("$A$1:$AG$" & LastRow).AutoFilter Field:=33
Else
End If
End Sub
カウンタ(表示行数、そうのみヘッダ)が1に等しい場合アイデアは、あるある場合、そこにエラーがないと、フィルタが無効にされるべきです他のいくつかの目に見える行は、フィルタはそのまま残り( "else"文の後で空白になります)、ユーザはそれらの間違いを見ます。 問題がある場合でも、カウンターは常に1です。