Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Excelオブジェクトモデルの理解 | VBAとExcelオブジェクトモデルの紹介
ビジネス自動化のためのExcel VBA

Excelオブジェクトモデルの理解

メニューを表示するにはスワイプしてください

Excelで記述するすべてのVBAコードは、オブジェクトに関する文です。何か(Application、Workbook、Worksheet、Range)が存在し、そのプロパティを読み取るか、メソッドの実行を依頼します。この階層構造を理解すれば、あとは主に語彙の問題となります。

階層構造の読み方

  • Application — Excelの実行中の全体インスタンス。すべての階層の最上位。
  • Workbooks — 開いているすべてのファイルのコレクション。単体はWorkbook(例: Section_1_VBA_Intro.xlsm)。
  • Worksheets — ワークブック内のタブのコレクション。単体はWorksheet(例: "Employees")。
  • Range — 1つのセル、セルのブロック、行全体、または列全体。
  • Cells / Value — Range内に格納されている実際のデータ。

Applicationから下位への完全なチェーンを入力する必要はほとんどありません。VBAは特に指定しない限り、アクティブなワークブックとシートを前提とします。しかし、オブジェクトを明示的に指定することが、脆弱なコードと信頼性の高いコードを分けます。同じ命令を記述する2つの方法を比較してください:

' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
 
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000

2番目のバージョンは、ユーザーが他に3つのブックを開いていて別のシートを選択している場合でも動作します。これは、マクロが数行を超える規模になると非常に重要な習慣です。今後のコースでも ThisWorkbook.Worksheets("SheetName") をこの方法で頻繁に使用します。

イミディエイトウィンドウでのオブジェクト関係のナビゲーション

イミディエイトウィンドウ表示 → イミディエイトウィンドウ または VBE 内で Ctrl+G;Mac では ^ ⌘ G)を使うと、Sub で囲まずに1行のコードをテストできます。

carousel-imgcarousel-img

行の先頭にクエスチョンマークを付けて入力し、Enter を押すとすぐに結果が表示されます。Section_1_VBA_Intro.xlsm で次の例を試してください:

?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count

3行目では、CurrentRegion というプロパティが登場します。これは、単一セルからその周囲の連続したデータブロック全体に拡張されます。

課題

  1. イミディエイトウィンドウで、セルをクリックせずにオブジェクト階層を通じて直接 Olivia Brown(4行目)の役職を出力する1行を書いてください。
  2. CurrentRegion.Rows.Count を使って、Employees テーブルに何行あるかを出力する2行目を書いてください。
ヒント
expand arrow

ThisWorkbook.Worksheets("Employees").Range("D4").Value と参照します — 4行目は Olivia Brown、D列は Position です。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  4
some-alt