Excel-VBA ワークシートを操作する時はオブジェクト変数を使おう(Setステートメントの使い方)
私が受ける依頼として多いのが、マクロを使ってのファイル操作です。例として、ファイルを複数操作してデータをまとめる、CSVファイルを連続してExcelシートに取り込む。これらを依頼される事が多いです。ファイルを複数操作する時に重宝するのが、「Setステートメント」です。
他のファイルのワークシートを操作したい場合、プログラムにシート名を何回も書いていては、プログラムが煩雑になります。さらにミスも発見しづらくなります。下記はセットステートメントを利用したサンプルプログラムです。
Dim ws as Worksheet
Set ws = Workbooks(ThisWorkbook.Name).Worksheets(“Sheet1”)
最初に「ws」というオブジェクト変数を宣言します。次に、Set ステートメントを利用して変数「ws」にオブジェクトを格納しています。(ThisWorkbook.Nameは現在開いていいるブックを指します。)こうすることにより、「Sheet1」の「セル1行1列」に「1」を入力する時は、
ws.Cells(1,1).value=1
とすることができ、プログラムが読みやすくなります。また条件分岐を組み合わせれば、格納するオブジェクトを次々と入れ替えてシートを操作する事ができます。オブジェクト変数を利用しないと、他のブック(例:book1.xlsx)のワークシートのセルの値を変える時、
Workbooks(“book1.xlsx”).Worksheets(“Sheet1″).Cells(1, 1).Value = 1
となり、プログラムが長くなります。オブジェクト変数の利用は、ファイルシステムオブジェクトを使う頃になってくると重宝します。