エクセル奮闘記-13 --- VBAの基礎まとめ-02
だいぶ涼しくなってきましたね。お元気でしょうか?
このエクセルの記事はマイペースで行きますので、ご了承ください。
追記
デジタルイラストの記事は明日以降にアップする予定です。
※今回はタブレットの話の続きにしようと思っています。
--------------------------------------------------------------------
コメント
「’」、「Rem」の後の命令文は無効化される
命令文の前の行に「’」、「Rem」でコメントを挿入し、説明しておく
VBAの構文
VBAは大きく分けて3種類の構文がある
1.オブジェクト式 = セルやワークシートを操作するときに使う
2.ステートメント = プログラムの実行を制御する
3.関数 = 決まった計算結果を返す
---------------------------------------------------------------------
オブジェクト式のパターンについて
対象.様子 =値 パターンA
対象.命令 オプション :=値 パターンB
対象.様子=値
ActiveCell.Value=123 アクティブセルに「123」を代入せよ
「=」 イコールでなく、右辺から左辺に投げ込む
右辺=ピッチャー、左辺=キャッチャー の解釈
---------------------------------------------------------------------
違うタイプのパターンA
例)※読み取り専用タイプ
プロパティ(様子や状態)には、ユーザーが自由に設定出来るものと、値を設定することが出来ず、何が設定されているか読み取ることだけが許されているものがある
ActiveCell.Adress セルの番地を取得する B3、A1、etc.
ActiveCell.Adress=”B3” 読み取り専用なのでエラーになる
※右辺からの投込み不可
Activesheet.Value セルの値を取得する 文字、数字、etc.
Activesheet.Value=123 読み取り専用なのでエラーになる
※右辺からの投込み不可
ユーザーが自由に値を設定することが許されていないプロパティを読み取り専用のプロパティと呼ぶ
※読み取り専用のプロパティは「=」がない。
↓
右辺から左辺に投げ込むことが出来ないから
---------------------------------------------------------------------
B)対象、命令、オプション := 値
対象.命令 (=メソッド=どのように実行する)
メソッド(命令)の実行に指定する条件やオプションを引数(ひきすう)と呼ぶ
ActiveCell.Delete アクティブセルを削除(自動的に上にシフトする)
ActiveCell.Delete Shift := xlToLeft アクティブセルを削除
どのように実行する?→ 削除したあと左方向にシフトする
「:=」があったらパターンB → 構文に引数(オプション=数値とは限らない)がある
参考
セルの値を消去する(=周りのセルをシフトしない)
ActiveCell.Clear
どのオブジェクトに対して、どんなプロパティやメソッドが用意されているか確認する
Workbooks Open Filename:=”C=¥.Book1.xlsx”
引数(オプション)は省略できる
ActiveCell.Delete Shift := xlToLeft
↓
ActiveCell.Delete xlToLeft
Workbooks Open Filename :=”C=¥.Book1.xlsx”
↓
Workbooks Open Filename ”C=¥.Book1.xlsx”
※自分でコードを書く時は省略しないが、人の書いたコードでは省略されていることがあるので注意する
---------------------------------------------------------------------
オブジェクト式の階層構造
Wordbooks(”Book1.xlsx”).Worksheets(”Sheet1”).Range.Value = 123
対象(オブジェクト) 様子(プロパティ)
パターンAの対象(オブジェクト).様子(プロパティ)
※「.」で区切られていても全部、対象(オブジェクト)
上位オブジェクトは省略出来る
Range.Value = 123
省略したオブジェクトはモジュールの種類によって判断される
標準モジュール アクティブブックのアクティブシート
シートモジュール モジュールが属するシート
ブックモジュール ブックが属するモジュール
UserForm アクティブブックのアクティブシート ※標準モジュールと同じ
※オブジェクト(対象)によっては上位オブジェクトを省略出来ないものもある
コレクション
コレクション = 要素の集合体(複数形になる)=「s」をつける
ワークシートの場合
WorkSheets(”Sheet1”)
WorkSheets(1) 左から1個目のシート
セルの場合
RangeとCells
「””」で囲む
Range(”A1”) セルA1
Range(”A1:B3”) セル範囲A1:B3
Range(”A1,C5”) セルA1とセルC5
Cells =コレクション
Cells(行番号,列番号)
Cells(1,1) A1
Cells(2,3) セルC2
Rangeはセルとセルの範囲を指定、
Cellsは行と列を数値で指定出来る、複数のセルを次々と操作するときなどに便利
---------------------------------------------------------------------
VBAコードを読む
コードを読む時は
パターンA
対象(オブジェクト).様子(プロパティ) = 値
「=」あり
対象(オブジェクト).様子(プロパティ) = 値
「=」なし 読み取りタイプ
ActiveCell.Adress セルの番地を取得する B3、A1、etc.
ActiveCell.Adress=”B3” 読み取りタイプなのでエラーになる ※番地を読み取るだけ
---------------------------------------------------------------------
※続きがあるのですが、この部分は説明しにくいので、ここで区切っておきます。