以下をマクロで実現しています。
①ExcelBookに格納されたデータをコピー・オブジェクトに格納する
②別ExcelBookに貼り付ける
③年度でフィルタをかける
④表示されているデータを削除する
⑤フィルタを解除する
その後、初期化(貼り付けしたデータを削除)して、再度マクロを実行(①~⑤)すると、
初回と異なる結果となります。
初回結果
■フィルタ前データ件数(iAllCount):0
■フィルタ後データ件数(iCount):0
■■フィルタ前データ件数(iAllCount):705
■■フィルタ後データ件数(iCount):357
初期化後の結果
■フィルタ前データ件数(iAllCount):0
■フィルタ後データ件数(iCount):0
■■フィルタ前データ件数(iAllCount):348
■■フィルタ後データ件数(iCount):541
初回結果と初期化後の結果の「■■フィルタ前データ件数(iAllCount)」の差が357で、
初回の「■■フィルタ後データ件数(iCount)」と一致するため、
初期化漏れではないかとデバッグ等しているのですが、原因が特定できません…。
何か解決するためのヒントになるようなことがあればご教授いただけないでしょうか。
よろしくお願いいたします。
VBA
1Function filterNendo() As Integer 2 3 Dim rangeAll As Range 'フィルタ対象データ 4 Dim iAllCount As Integer 'フィルタ前データ件数(全件) 5 Dim iCount As Integer 'フィルタ後データ件数(削除分) 6 Sheet2.Select 7 8 MsgBox "■フィルタ前データ件数(iAllCount):" & iAllCount 9 MsgBox "■フィルタ後データ件数(iCount):" & iCount 10 11 'シート1の年度と一致しないデータを表示 12 Sheet2.Range("J2").AutoFilter Field:=59, Criteria1:="<>" & Sheet1.Range("C15").Value 13 Set rangeAll = Sheet2.AutoFilter.Range 14 iAllCount = rangeAll.Rows.Count + 1 15 iCount = WorksheetFunction.Subtotal(3, Columns(59)) - 1 16 17 MsgBox "■■フィルタ前データ件数(iAllCount):" & iAllCount 18 MsgBox "■■フィルタ後データ件数(iCount):" & iCount 19 20 On Error Resume Next 21 Sheet2.Rows("3:" & iAllCount).SpecialCells(xlCellTypeVisible).Delete 22 On Error GoTo 0 23 24 If Sheet2.FilterMode = True Then 25 Sheet2.ShowAllData 26 End If 27 28 '廃棄処理 29 Set rangeAll = Nothing 30 Set AutoFilter = Nothing 31 32 filterNendo = iCount 33 34End Function
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/16 01:28