VBA Excel チートシート
毎回VBAでぐぐって調べるので自分用にVBAまとめチートシートを作成します。
ショートカット
・VBEの起動(Visual Basic Editor)
Alt + F11
・入力補完の表示
Ctrl + Space
Subプロシージャ作成
VBAでは戻り値を返さない関数をSubプロシージャという。
Sub プロシージャ名() End Sub
デバック出力
Sub プロシージャ名() Debug.Print ("HelloWorld") End Sub
コメント
コメントはシングルクォーテーション「'」のあとに記述します。
Sub プロシージャ名() ' コメント End Sub
変数宣言
Sub 変数宣言() Dim 変数名 As String 変数名 = "HelloWorld" End Sub
定数宣言
Sub 定数宣言() Const 定数名 As Long = 100 End Sub
四則演算子
記号 | 説明 |
---|---|
+ | 加算 |
− | 減算 |
* | 乗算 |
/ | 定数の除算 |
\ | 整数の除算 |
Mod | 除算の余り |
比較演算子
代入演算子と等価演算子が同じってほんといけてないと思う(´・ω・`)
記号 | 説明 |
---|---|
< | 小さい |
<= | 以下 |
> | 大きい |
>= | 以上 |
= | 等しい |
<> | 等しくない |
論理演算子
記号 | 説明 |
---|---|
And | 論理積 |
Or | 論理和 |
Not | 否定 |
文字列の定義と結合
文字列は、ダブルクォーテーションでくくる。
Sub 文字列の定義() Dim str As String str = "いるか" End Sub
文字列の結合は、アンパサンドで結合する。
Sub 文字列の結合() Dim str As String str = "いるか" & "最強" End Sub
IF文
Sub if文() If True Then MsgBox ("TRUE") End If End Sub
Sub ifElse文() If True Then MsgBox ("TRUE") Else MsgBox ("FALSE") End If End Sub
Sub ElseIf文() If False Then MsgBox ("処理1") ElseIf True Then MsgBox ("処理2") Else MsgBox ("処理3") End If End Sub
FOR文
Sub for文() Dim i As Long For i = 1 To 10 Debug.Print (i) Next i End Sub
Do While文
Sub doWhile文() Dim i As Long Do While i < 10 Debug.Print (i) i = i + 1 Loop End Sub
セルの操作
・単一セルの指定
以下は同一のセルを指定している。
Sub 単一セルの指定() Dim str As String str = Range("A2") End Sub
Sub 単一セルの指定() ' Cells(行インデックス, 列インデックス) Dim str As String str = Cells(2, 1) End Sub
ワークシートの操作
・シートの定義
Sub ワークシートの定義() Set ws = Worksheets("Sheet1") End Sub
・別ワークシートのセル選択
Sub ワークシートの選択() Set ws = Worksheets("Sheet1") ws.Activate ws.Range("A1").Select End Sub
Activate忘れやすいので。。。僕だけかな。。。
配列の操作
・固定長配列の定義
Sub 配列の定義() ' 固定長配列の定義 ' Dim 配列名(添字の上限値) As データ型 Dim 固定長配列(5) As String End Sub
・可変長配列の定義
Sub 配列の定義() ' 可変長配列の定義 ' Dim 配列名() As データ型 Dim 可変長配列() As String End Sub
・配列の初期化
Sub 配列の初期化() Erase 固定長配列 Erase 可変長配列 End Sub
・配列の添字を変数で定義
久しぶりにVBA書くとよく忘れてる。「ReDim」で変数の場合は定義する。
Sub 配列の添字を変数で定義() Dim maxRow As Long maxRow = 100 ReDim 配列(maxRow) As String End Sub
・配列の添字を定数で定義
Sub 配列の添字を定数で定義() Const maxRow As Long = 100 Dim 配列(maxRow) As String End Sub
画面更新の停止と再開
Sub 画面更新() ' 画面更新の停止 Application.ScreenUpdating = False ' 画面更新の再開 Application.ScreenUpdating = True End Sub
行継続文字(コードの途中に改行)
「_」アンダースコアをはさむことでコードの途中で改行をいれることができる。
Sub 行継続文字() Dim 変数 As String 変数 = "Hello" & _ "World" Debug.Print (変数) End Sub
別プロシージャの呼び出し
Sub 別プロシージャの呼び出し() Call プロシージャ名 End Sub
コメント