VBAオジサンのらくがき帳

#07 よくつかうオブジェクトについて

2021-02-28 00:00:00

今回はRangeオブジェクト以外のよく使うオブジェクトについて紹介したいと思います。

これまでRangeオブジェクトを使いながら、プロパティやメソッドなどについて説明しましたが、オブジェクトの操作をするということは、そのオブジェクトのプロバティを変更したり、メソッドを呼び出すということになります。

Rangeオブジェクトに関連して覚えておきたい3つのオブジェクトがあります。これらのオブジェクトの機能やよくつかうプロパティやメソッドについて説明します。

Applicationオブジェクト

起動されているExcelのプログラムに対応するオブジェクトです。このオブジェクトをつかってExcelの一般的な状態や挙動についての操作ができます。Applicationには多くのプロパティやメソッドがありますが、よく使うものの多くはオブジェクト名を省略して使用することができます。(そのためApplicationオブジェクトのプロパティやメソッドだと気づかずに使っていることも、あるのではないかと思います。)

Applicationオブジェクトのプロパティ

Applicationオブジェクトのメソッド

Workbookオブジェクト

1つのワークブック/ファイルに対応するオブジェクトです。マクロから同じファイルのWorkbookオブジェクトにはThisWorkbookという名前(実際にはApplicationオブジェクトのプロパティ)でアクセスできます。ThisWorkbookよりも下のサンプルのように他のブックを利用するときのほうが使うことが多いかもしれません。

Dim bkSample1 As Workbook
Dim a1Value As Variant

Set bkSample1 = Workbooks.Open("Sample1.xlsx")
a1Value = bkSample1.Sheets("Sheet1").Range("A1").Value
bkSample1.Close False

Worksheetオブジェクト

Worksheetのインスタンスは一つのシートに対して1つです。Sheet(“シート名”)でアクセスすることができます。

Dim val As Variant
Sheets("Sheet2").Select
val = Range("A1").Value

またシートには名前がつけられていて、その名前をつかってシートにアクセスすることも可能です。名前はプロパティから変更することもできます。

Dim val As Variant
shtSub.Select
val = Range("A1").Value

アクティブでないシートの操作やデータ取得をしたり、複数のシートのデータを扱うときにべんりです。