sironekotoroの日記

Perl で楽をしたい

Excel VBA ベーシック 公式テキスト 4章〜5章

VBAの構文には3種類ある

オブジェクト式

  • 対象.命令 = 値

      • ActiveCell.Value = 123
      • アクティブなセルに123を代入する
    • オブジェクトの様子や状態をプロパティという -プロパティには設定の変更が可能なものと、参照しか出来ないものがある
  • 対象.命令.オプション = 値

    • 操作対象(オブジェクト)に何かのアクションを起こさせる
    • これをメソッドという
    • メソッドの実行に指定する条件やオプションを引数という

ここまでの単語(昨日の分も含む)

  • マクロ
  • VBA
  • VBE
  • モジュール
  • プロシージャ
    • subプロシージャ
    • functionプロシージャ
  • ステートメント
    • for next
    • call
  • オブジェクト
  • プロパティ
  • メソッド

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 〜と記述)

あ・・・