【備忘録4】ExcelVBA~よく利用するメソッド、プロパティ、ステートメント、VBA関数など~

ExcelVBA-マクロ

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」を記述する。

最後に

次回はブックとシートの操作、ファイルシステムオブジェクトについての備忘録となります。

コメント

タイトルとURLをコピーしました