学習日:2024/07/05
参考書:ExcelVBA本格入門 技術評論社(著者 大村あつし)
2-1から2-4まで(P58-70)
【学習内容のまとめ】
マクロの記録の主な欠点4つ
-
無駄な操作が記録される
-
デフォルト値が記録される
ダイアログボックスで設定を行うと、不必要な項目まで規定値でステートメントに記述されてしまう
-
汎用性のあるマクロが作成できない
任意の日付を選択してデータを抽出するなどの対話型の操作はマクロの記録だけでは作成できない
-
条件分岐や繰り返しを行うマクロが作成できない
条件分岐や繰り返し処理はVBAを使ってマクロを制御しなくてはならない
-
Excelの部品=オブジェクト
-
オブジェクトの特徴=プロパティ
それぞれのシートは名前を付けることができ、セルの幅も変更できるなど、シートごとに値(特徴)が変わり、その値をプロパティと呼ぶ
-
プロパティの値を調べる
オブジェクトのプロパティの値を取得する構文 → 変数 = オブジェクト.プロパティ
例:Paper = Body.Color (変数PaperにオブジェクトBodyのプロパティColorを代入する)
変数myNameにオブジェクトWorksheets(1)のプロパティNameをの値を代入する
myName = Worksheets(1).Name
-
プロパティの値を変更する
オブジェクトのプロパティの値を変更する構文 → オブジェクト.プロパティ = プロパティ値
例:Body.Color = "Red” (オブジェクトBodyのプロパティColorにRedという値を代入する)
※VBAでは文字列は"”(ダブルクォーテーション)で囲む
※変数と数値は囲まない
-
オブジェクトを操作する=メソッド
VBAがオブジェクトに対して実行できる操作のことをメソッドと呼ぶ
例えば、ワークシート(オブジェクト)を追加したり削除したりする操作など
-
メソッドの構文
メソッドでオブジェクトを操作する構文 → オブジェクト.メソッド
例:Engine.Start (車のオブジェクトEngineをStartする)
-
メソッドの動作を細かく指示する
引数を使ってメソッドの動作を細かく指示する構文 → オブジェクト.メソッド 引数
例:Accelerator.Step Speed:=50 (スピードが50km/hになるようにアクセルを踏む)
-
Deleteメソッド、Addメソッド、After、Before
-
Excelオブジェクトの階層構造
Excelのオブジェクトは階層的に繋がっている
-
親オブジェクトを指定する
複数のワークシートがあって、ワークシートの指定をせずにセルに文字を入力するステートメントを記述したとすれば、アクティブなワークシートのセルが選択される
アクティブではないワークシートのセルを指定する場合は、まずセルの親オブジェクト(ブックやワークシート)を指定する必要がある
-
オブジェクトの集合体=コレクション
Workbookの集合体はWorkbooksコレクション
Worksheetの集合体はWorksheetsコレクション
-
すべてのブックと1つのブックを閉じる
すべてのブックを閉じるマクロ → Workbooks.Close
1つのブックを閉じるステートメント → Workbooks(1).Close
(インデックス番号で複数あるWorkbooksの中で最初に開いたWorkbookを指定している)
コレクション + インデックス番号 = 単体のオブジェクト