VBAで列参照を使ってセルの内容を消去する
列参照を使って、いくつかのセルのデータを消去するコードを作成しようとしています。以下のようなコードを使用しています。
Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents
しかし、最初の.Cellsセクションでエラーが発生します。これはなぜですか?
12
3
列全体を範囲指定してアクセスするには、
Worksheet.Columns
オブジェクトを使用します。以下のようになります。
はA列の内容を消去します。
同様のことを行に対して行いたい場合は、
Worksheet.Rows
オブジェクトもあります。表示されるエラーは、おそらくwithブロックがないことが原因です。
withブロックについてはこちらをご覧ください。マイクロソフトヘルプをご覧ください。
Gary's Studentが述べているように、最初に書いたコード通りに動作させるには、
Cells
の前のドットを削除する必要があります。 1行のコードしか書いていないので確証はありませんが、ドットを削除したときに出たエラーは、変数の定義方法に関係しているかもしれません。私は、変数を整数として定義してあなたのコードを実行したところ、動作しました。
しかし、もし使うとしたら、操作するオブジェクトを定義した行の最初に「With」を入れてください。以下は、不要な
With
文を使って書き換えられたコードです。With
ステートメントは、コードを再入力する手間を省き、コードを読みやすくするためのものです。 一つのオブジェクトで複数のことを行う場合に便利で適切になります。例えば、カラムを赤にして太い黒のボーダーも追加したい場合は、次のような
With` ステートメントを使用します。そうでなければ、次のようにアクションやプロパティごとに範囲を宣言しなければなりません。
これで、Gary'Studentが、コンパイラが(不適切であるにもかかわらず)
With
を期待しているのではないかと考えた理由と、With
がコードの中でどのように、またどのような場合に役立つのかを理解していただけたと思います。その前にWith文が必要です。 あるいは、.CellsをCellsにする。