Excel VBA ベーシック 公式テキスト 4章〜5章
VBAの構文には3種類ある
- オブジェクト式
- ステートメント
- 関数
オブジェクト式
対象.命令 = 値
- 例
- ActiveCell.Value = 123
- アクティブなセルに123を代入する
- オブジェクトの様子や状態をプロパティという -プロパティには設定の変更が可能なものと、参照しか出来ないものがある
- 例
対象.命令.オプション = 値
- 操作対象(オブジェクト)に何かのアクションを起こさせる
- これをメソッドという
- メソッドの実行に指定する条件やオプションを引数という
ここまでの単語(昨日の分も含む)
Perlを勉強している身として
- 変数の宣言は強制じゃないけど、強く強く推奨されている。これはPerlも同様。
- プロシージャってのはPerlで言うところのサブルーチンみたいなものか。Perlの場合には「最少実行単位」ではないけど
- キャメルケース推奨みたい
- ex) UserName
変数と定数
- Dim 変数名 As 型
- そうそう、うちが最終的に移植したいVBAのコードにもこう書いてあった!(あたりまえ
- しかし、一歩一歩進んでいる感じがして盛り上がる
- 例
Dim tmp As String
- 文字列型の変数tmpを宣言する
- なお、VBE(Visual Basic Editer)はふつうにコード補完機能や整形機能があってありがたい。
- 複数の変数を宣言するとき
- ダメな例
Dim A , B , C As String
- この場合には、変数Aと変数Bの型宣言を省略、C のみ文字列型、と判断される。
- 良い例
Dim A As String , Dim B As String , Dim C As String
- ダメな例
変数の取得と代入
- A1のセルに「山田」という文字列が入る
Sub Sample1() Dim tmp As String tmp = "山田" Range("A1").Value = tmp End Sub
- 変数名を
“ ”
でかこってはいけない。以下のスクリプトを実施した場合、「tmp」という文字列が入力される
Sub Sample1() Dim tmp As String tmp = "山田" Range("A1").Value = "tmp" End Sub
変数の適用範囲
- ローカル変数
- モジュールレベル変数
- パブリック変数
ローカル変数
モジュールレベル変数
- モジュール全体で同じ変数を利用する場合には「モジュールレベル変数」として利用する
- モジュール先頭部の「宣言セクション 」に記述する。
- 宣言セクションは、モジュール先頭から最初のプロシージャまでの間の行
Dim
の代わりにPrivate
を使って宣言も出来る(宣言エリアに書くこと)- これは、Perlで言うところのour宣言かな
パブリック変数
- プロシージャも、モジュールも超える変数
- 宣言セクション内で、Public ステートメントを使って宣言する
定数
- 「よく使う数値」に名前をつけたもの
- 例)左方向削除
Selection.Delete Shift:=xlToLeft
- これは、以下のものと同じ
Selection.Delete Shift:=-4159
- 定数は、マクロの可読性を高める
- 定数の定義はConstステートメントを使う
- 例
Const 定数名 As 定数の型 = 値
- 適用範囲(スコープ範囲)は、通常の変数に準じる
- プロシージャ内
- モジュール内(宣言エリア)
- すべてのモジュール内(
Public Const 〜
と記述)
あ・・・
- VBAの公式的スト買うよりも、ドットインストール先にチェックすれば良かった・・・
- [Excel VBA入門 (全19回) - プログラミングならドットインストール] (http://dotinstall.com/lessons/basic_excel_vba)