ExcelVBAマクロのプログラミングで頻繁に利用するメソッドやプロパティ、ステートメント、VBA関数についての備忘録です。
ExcelVBAでは利用頻度の高い定型文が既にネット上で多く出回っているため、最初からわざわざプログラミングする必要はありません。大抵の場合はコピペで時短できます。
メソッド、プロパティ、ステートメント、VBA関数など
変数の宣言を強制する
Option Explicit
最初に必ず記述する。(VBEの設定にてモジュール挿入時に自動表示する)
処理はバックグラウンドで行う
Application.ScreenUpdating = False
実際の処理の様子を見えなくする。
ファイル操作の確認メッセージを非表示にする
Application.DisplayAlerts = False
ブックを閉じるときなど、確認メッセージを表示しない。
ブック名.Close False
保存せずに閉じる。上記のような設定をした場合は確認メッセージも表示されない。
メッセージウィンドウを表示する
MsgBox "メッセージ"
メッセージボックスを表示してプログラムの実行を一時停止する。
「OK」ボタンをクリックするとプログラムの実行を再開する。
ボタンには「OK」以外にも「中断」、「はい」or「いいえ」、「yes」or「no」など色々あり、押したボタンに応じて処理を分岐することができる。
Withでオブジェクトを指定する
With オブジェクト名
.Rangeなど
End With
Withで基準となるオブジェクトを指定しておくと、メソッドやプロパティを記述する際にオブジェクト名を省略できる。
表のセル範囲を配列として取得する
配列変数 = Sheets("シート名").Range("A1").CurrentRegion
指定したセル範囲の値を、行と列の2次元配列に格納する。
特殊なプロパティ
Date → 今日の日付
ClearContents → セルまたは範囲をクリア
.Range("A1").End(xlUp).Row
A1セルで[Ctrl]+[↑]を押した時と同じ動き。
.Cells(Rows.Count,1).End(xlUp).Row
1列目の最終行で[Ctrl]+[↑]を押した時と同じ動き。
つまり、表の最終行を表す。
.Cells(Rows.Count,1).End(xlUp).Offset(1,0)
表の最終行の1つ下の行を選択する。(新規追加する場合など)
Deleteメソッドについて
セルをDeleteするとセル自体が削除され、デフォルトでは下から上へセルが移動する。
但し、セルの移動先は引数で指定できる。
Range("セル番地").Delete Shift:=xlshiftToLeft
この場合は指定のセルを削除して右から左へ移動する。
よく利用する条件分岐
If文
If 条件式1 Then
処理1
ElseIf 条件式2 Then
処理2
Else
処理3
End If
上から順番に条件式が適用され、条件に一致した場合は下の条件は無視される。
Case文
Select Case 変数名
Case 値(または範囲)
処理1
Case 値(または範囲)
処理2
Case 値(または範囲)
処理3
End Select
指定した変数の値に応じて処理を分岐する。
If文を別の書き方にしただけで、基本的には同じ動きとなる。
よく利用するループ処理
For ~ Next
For 変数名 = 数値1(開始) to 数値2(終了)
処理
Next
開始に指定した数値から1ずつ加算しながら終了の数値になるまで繰り返し処理を実行する。
For Each ~ Next
For Each 変数名 in 配列 (またはコレクション)
処理
Next
配列またはコレクションから中身がなくなるまで順番に取り出しながら繰り返し処理を実行する。
※途中で処理を抜ける場合は「Exit For」を記述する。
Do ~ Loop
Do While 条件式
処理
Loop
条件を満たす間は繰り返し処理を実行する。
※途中で処理を抜ける場合は「Exit Do」を記述する。
最後に
次回はブックとシートの操作、ファイルシステムオブジェクトについての備忘録となります。
コメント