VBA用語説明(基礎)+ インテリセンス Macユーザー向け Excel VBA 入門 [03] Excel2019 for Mac
[03] VBA 用語説明(基礎)+ VBE環境設定1 + インテリセンス
VBA を学習するにあたり、最低限知らないといけない用語を説明。
VBA の処理単位を プロシージャ と呼び、戻り値を返す Function (関数)プロシージャ と、戻り値を返さない Sub プロシージャ の2つ など!
忘れてました。 用語説明の前に 必須の VBE環境設定 を行います。
おまけで、 インテリセンス(MSのコード入力補完技術の名称)の利用方法も載せました!
[03] VBA 用語説明(基礎)+ VBE環境設定1(Option Explicit + フォント設定)
まず、Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。
VBE環境設定1(Option Explicit + フォント設定)
必須の VBE環境設定 を行うため、 VBE ウィンドウ選択状態で メニューバー [Excel]-[環境設定] ダイアログ(下記)を表示。
デフォルトの[編集]タブ内の「変数宣言が必要です」チェックボックスをオンに変更し、変数の宣言を強要。 これ以降、挿入されたモジュールの先頭に「 Option Explicit 」が自動的に付加されます。(詳細は、「変数」解説時にて)
デフォルト状態のままだと日本語入力時に文字カーソル表示がずれる ため、[エディターの設定]タブ内の VBE全般のフォント設定となる [標準コード] のフォントを "Meiryo UI" に変更。
( 他だと "MS Gothic" や "Monaco" 等、文字カーソル表示がずれない かつ 見やすいフォントを選択) また、フォントサイズも 見やすいサイズに変更。 最後に [OK] ボタンをクリックしましょう。
2021/06/26 追記
一部の等幅フォント でないと(日本語入力が不必要な)半角文字入力時に若干カーソル表示が乱れるようです。 標準コードのフォントを「MS Gothic 16point」に再変更しました!
等幅フォントの「Osaka フォント」では、きちんと等幅で表示されないような気がします。 ただ、 MS Gothic は「 数字の 0 」と 「英字大文字の O 」の判別が付きにくい ので、注意が必要です。
ついでに、 Excelウィンドウ選択状態で メニューバー [Excel]-[環境設定] ダイアログを表示後 [全般] アイコンをクリックして表示させ、見やすい フォント(サイズ)を選択。 また、下線のチェックボックスをオンにしておくと良いでしょう。
VBA 用語説明(基礎)
VBA を学習するにあたり、最低限知らないといけない用語の説明
- マクロ …再利用可能なよう 狭義では一連の処理を記録したものを指し、広義では VBAで記述したコードも 含まれる
- VBA ( Visual Basic for Application ) …(.NET系でない) VB6.0 ( Visual Basic 6.0 ) を、 MS Office も制御できるように拡張したもの
- VBE ( Visual Basic Editor ) …VBA コード入力・編集のための VBA 開発環境【無料】
- オブジェクト …セルを管理する Range や Cells オブジェクトといったような、最小構成単位
- プロパティ …オブジェクト毎に設定・参照可能な値
- メソッド …オブジェクト毎に用意されている命令
- ステートメント…If 文のような、マクロ記録で記録されない VBA の挙動を制御するための構文
- 関数 …実行結果として戻り値を返すタイプの処理単位。 (ほぼ)共通で利用可能な VB関数 が用意され、専用関数のサブセットが Excel、Word、Access、PowerPoint 等それぞれのオフィスアプリケーション毎に用意されている
戻り値を返す Function (関数)プロシージャ と、戻り値を返さない Sub プロシージャ
Macro2 にて赤色で塗りつぶした場合の VBAコード
Sub Macro2()
Range("B2:C10").Select ' 同じセル範囲を選択
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(255, 0, 0) ' 「赤」色
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
VBA の処理単位をプロシージャと呼び、戻り値を返す Function (関数)プロシージャ と、戻り値を返さない Sub プロシージャ の2つがあります!
Function や Sub プロシージャが VBA にて実行可能な最小単位だが、プロシージャから別のプロシージャを呼び出すことが可能。
マクロ記録で作成されるのは 戻り値を返せない Sub プロシージャ で、プロシージャの呼び出しのみ可能。
先頭の Sub は Subプロシージャ の始まりを示し、その右側が プロシージャ名。
Subプロシージャ内の 1行目は、Range オブジェクトで使用可能な Select メソッド を実行。 B2:C10 までマウスで(反転)選択した操作が、コード化されたもの。
2行目の Selection は シート上で選択した対象(今回は「セル範囲」、つまり Range("B2:C10") オブジェクト)、 Interior は「その内部」 を指す場所として 定義済み。
With から End With はその間を一括りにするためのコードで、 Selection.Interior に対して まとめて操作を行います。
なお、 [上位オブジェクト].[下位オブジェクト(プロパティ)] 表記のため、Selection オブジェクト内に Interior プロパティが存在します。
ちょっと、難しくなってきましたね。 今日のところは、 [親].[子].[孫] と左から順にオブジェクト(プロパティ)を指定して その間に . (ピリオド)を挟む と言うことだけ覚えれば充分ですよ。
3行目以降はプロパティの設定となり、 Selection.Interior オブジェクトに対し 5つのプロパティを設定。
個々にプロパティ設定することも当然可能で、そのコード例は Selection.Interior.Color = RGB(255, 0, 0) となります。
先程説明した通り(シート上で選択対象を変更するまでは) Range("B2:C10").Interior.Color = RGB(255, 0, 0) でも同一操作で、 Selection は言わば一時的な別名と思ってもらえれば...
End Sub は Subプロシージャ の終わりを示します。
最後に、 プロパティの値設定には 代入を意味する = (イコール)を用い、左辺に右辺の値を代入(設定) していることだけは 忘れないように!
★おまけ★ インテリセンス の利用方法
対象オブジェクトが一つに絞れる場合、 .(ピリオド)まで入力すると インテリセンス(コード入力補完)が表示 されますが、先頭の1文字(候補が多い場合は、2文字か3文字)を入力して限定すると絞りやすいですよ。
ミニアイコンの違いに気付きましたか? 「プロパティ」と「メソッド(緑色)」が見て取れますね。 説明の続きは画面内を参照!
うろ覚えでも 楽して 間違い無くコード記述できるため、 インテリセンス にガンガン頼ってくださいな。 MSの インテリセンス ( IntelliSense ) 技術は Visual Studio や VS Code で定評があり、最新版の Visual Studio 2019 と比べて機能は限定されますが VBA からも利用可能。
(イミディエイト ウィンドウ内で説明していますが、もちろん コード ウィンドウ内でも インテリセンスが利用可能)
2021/06/26 追記
コード ウィンドウ内の「インテリセンス」、不安定なようです! イミディエイト ウィンドウでは きちんと動くので、イミディエイトウィンドウで1行ずつ入力して コピペ ありかも...
【参考】 「セル範囲の背景色の変更のみ」を行うVBAコードは(対象のセル範囲が予め判明しているのであれば)、以下の1行のみで実現可能。
Range("B2:C10").Interior.Color = RGB(255, 255, 0)
With 〜 End With は対象オブジェクトに対し「複数のプロパティ」をまとめて設定する時などに利用するステートメントのため、今回のようにプロパティを一つ設定するだけなら 無くてもかまいません。 また、わざわざ対象のセル範囲を(マウスで)選択する必要もありません。
[command] + [Q] にてまず VBE を終了し、Excel のウィンドウ内を選択して [command] + [Q] にて Excel も終了させます。 「作業中のブック」を保存するか確認のダイアログ画面が表示された場合は 「保存」しましょう。 「自動保存」済みの場合、保存するかどうかの確認ダイアログ画面は表示されません。
お疲れ様でした! コードの説明が続くと、眠くなりますかね? 次回は、とりあえずコードの説明は抜きにして、 VBA で カラーチャート を作ってみましょう!
最後まで読んでいただき、ありがとうございます。 また、お越しくださいませ。
// アタル