月曜日, 2月 20, 2023

Excel VBA 02 
オブジェクトとワークシートとコレクション

混乱しがちですが、VBAを理解する前にオブジェクトとワークシートとコレクションを理解します。

操作対象は全てオブジェクトです。

(A)Excel(Applicationオブジェクト)
(B)ブック(Wordbookオブジェクト)
(C)ワークシート(Worksheetオブジェクト)
(D)セル(Rangeオブジェクト)

Rangeオブジェクトでセルを指定します。
同種オブジェクトの集まりがコレクションです。
Worksheetオブジェクトはコレクションから指定。
(E)Worksheetsコレクション(Worksheetオブジェクト)
   Worksheetsコレクションの要素(Worksheetオブジェクト)
   Worksheets("Sheet1")
   Worksheets("Sheet2")
   Worksheets("Sheet3")
   Worksheets("Sheet4")
※Worksheets("シート名")
 Worksheets(インデックス番号)
※コレクション→Worksheets
 オブジェクト→Worksheet
(F)Range("C7")
(G)Range("E11:G16")


(H)Rangeオブジェクトのプロパティ
   セルの値(Valueプロパティ):科目
   列番号(Columnプロパティ):7
   行番号(Rowプロパティ):11
※VBAの命令文としては成立せず、他の構文に組み込んで使用。
■指定セルのアルファベット列名から列番号取得
COLUMN([範囲])指定されたセル参照の列番号を返す。
範囲:省略可能。 列番号を調べるセルまたは範囲を指定。
   G列上で =COLUMN() → 7
   任意のセル上で =COLUMN(G1) → 7
   任意のセル上で =COLUMN(G11) → 7
   任意のセル上で =COLUMN(G123) → 7
■指定セルの列番号からアルファベット列名取得
ADDRESS(行番号, 列番号, [参照の型], [参照形式], [シート名])
行番号:数字で行番号を指定(必須)
列番号:数字で列番号を指定(G列ならば7を指定)
参照の型:返される参照の種類を1~4の数字で指定。省略時は1(任意)
(1:絶対参照、2:行絶対・列相対参照、3:行相対・列絶対参照、4:相対参照)
参照形式:TRUE/FALSEで参照形式を指定。省略時はTRUE(任意)
(TRUE:A1形式、FALSE:R1C1形式)
A1形式とは、列をアルファベット行を数字で表示・指定する形式
R1C1形式とは、列も行も数字で表示・指定する形式
Rは行番号のRow、Cは列番号のColumnのこと。
シート名:他シートのセルを参照する場合に指定(任意)
   任意のセル上で =ADDRESS(11,7) → $G$11
   任意のセル上で =ADDRESS(11,7,2) → G$11
   任意のセル上で =ADDRESS(11,7,3) → $G11
   任意のセル上で =ADDRESS(11,7,4) → G11
   Range("G11").Value ←G11セルの値
   MsgBox Range("G11").Value
   ↑G11セルの値をメッセージに表示
(I)Worksheetオブジェクトのプロパティ
   シート名(Nameプロパティ):Sheet1
   インデックス番号(Indexプロパティ):1
プロパティの最後に「=値」を記述することで、プロパティを設定。
   Range("G11").Value = "科目"
   ↑G11セルの値を「科目」とする
オブジェクト一覧