ここではオブジェクトについてまとめました。
VBAの文法を学ぶ上でも大切な内容ですので、ここで一通り確認しておきましょう。
オブジェクトとは
オブジェクトとは操作の対象になるモノのことです。
具体的には、セル、シート、Excelファイル、Excel自体があります。
オブジェクトはこういった階層で構成されています。
オブジェクト名 | 意味 |
Application | アプリケーション(Excel自体) |
Workbook | ワークブック(Excelファイル) |
Worksheet | ワークシート |
Range | セル |
VBAでは操作の対象となるモノを指示した上で、動作を記述します。
そのため、まずは”何を”動かしたいかを明記する必要があります。
オブジェクトとは|具体的な使い方
「考え方はなんとなくわかったけど、実際に使うイメージがわかない。」
私が初めて学習を始めたときはこのような状態でした。
概念ではわかりにくいと思いますので、具体的な例をつかってご紹介いたします。
「セルA1」を指定したいとき
コードの内容は次の通りです。
Range("A1")
これで目的どおりの値を取得できます。
しかし、複数のシートがあった場合はどうでしょうか?
「Sheet2」でマクロ実行したいのに、「Sheet1」にボタンを設置した場合とかですね。
マクロ実行をしたときに開いているシートでプログラミングが実行されますので、このままでは「Sheet1」でマクロが実行されてしまいます。
「Sheet1」の「セルA1」を指定したいとき
こういった場合は、このような書き方をします。
Worksheets("Sheet1").Range("A1") 'もしくは Sheets("Sheet1").Range("A1")
これで目的のセルを指示することができます。
実はもう1種類、シート番号をつかってシートを指示することもできます。
「左から数えて何番目のシート」といった指示の方法ですが、シート挿入があると思わぬ動作につながるデメリットがありますので、こだわりがなければシート名を直接書くことをオススメします。
同じような考え方で「Workbook」を指定することもできます。
この場合はExcelのファイル名を指定する形になります。
ファイル名「test.xlsx」の「Sheet1」の「セルA1」を指定したいとき
Workbooks("test.xlsx").Sheets("Sheet1").Range("A1")
今の段階では、いちばん大きな階層の「Application」については使用頻度が低いため扱いません。
まずはセルとワークシートが記述できるようになれば問題ないです。
まとめ
今回はオブジェクトに関してのご説明を致しました。
プログラミングを書く上で必ず扱う内容ではありますが、「覚える!」といった感覚ではなく、「いつの間にか慣れてしまっている!」といった感じの習得になるかと思います。
あまり深く考えなくてもコードの記述を繰り返すうちになんとなくわかってくるはずです。