前回の検索結果がはいっているので、検索結果データエリアをクリアしなければなりません。
クリアするには、検索結果のデータ最終行を知らなければなりません。わかれば、セル範囲.Clearメソッドで値および書式を削除できます。
(1) 検索結果の最終行を求める。
- Rend = Ws1out.Cells(Rows.Count, "A").End(xlUp).Row
【説明】
- ワークシート「Ws検索結果」には検索結果がセル範囲“A2:L”からはじまり最終行までレコードが入っています。
- Rows.Countはエクセルが持っている最大行を求めるプロパティは、Excel2010では1,048,576行をあらわします。
- A列をセル(A1048576)から上のセルに探しに行きデータ(無から有)があるセルまでいき、そのときのセルの行が最大行になります。なぜ、上から探さないで下から探す方法にしたかは、万一途中に空白セルがあればその一つ手前が最大行になってしまうからです。
(2) セル範囲指定してデータ削除する。
【参考コード】
- Dim Ws検索結果 As Worksheet
- Sub 検索結果クリア()
- Dim i As Integer
- Dim 最終行 As Long
- Set Ws検索結果 = ThisWorkbook.Worksheets("検索結果")
- '最終行算出
- 最終行 = Ws検索結果.Cells(Rows.Count, "A").End(xlUp).Row
- If 最終行 >= 2 Then
- Ws検索結果.Range("A2:L" & 最終行).Clear
- End If
- End Sub
なお、サンプルデータbooks-search.xlsm「図書検索.xlsm」の標準モジュール「T03図書結果クリア」に参考コードを掲載しておきます。
【ワンポイント】
Dim文で「最終行」の変数をlong型で宣言したのは、-2,147,483,648〜2,147,483,647の範囲内で取り扱えるからです。ちなみにIntege型は、-32,768〜32,767の範囲しか扱えません。