見出し画像

VBAの基本~変数定義やif文やfor文と言った基礎構文から内部関数の定義方法【備忘録】~

中山テックです。

さて、普段からVBAで開発している方は除きますが、たまにVBA使うと構文忘れる事ありませんか?
私は、よくあります(汗

という訳で今回は忘れっぽい私向けにVBA構文を備忘的に残したいと思います。

参考になるのであれば是非ご覧ください。


変数

VBA変数の使い方
Dim 変数名 AS

簡単なガントチャートを作った時のVBAを流用しています

構文は上記の通りで、変数名は「何に使う」か、わかりやすい名前を付けてあげましょう。
そして型は数字や日付といった用途に合わせて指定します。

Integer:-2,147,483,648 から 2,147,483,647 までの符号付き 32 ビット (4 バイト) の整数を保持

String:文字列。ダブルクォート("文字")で囲みます

Date:日付の型。前回のブログではセルに指定した日付を格納するために使っていた

Worksheet:Excelのシートオブジェクト。主にシート内を検索するVBAを組む時に使ったり

IF文

VBA IF文の使い方
IF 条件式(例:A=1とか) Then

【処理】

Else If(条件式) Then  ←省略可

【処理】

Else          ←省略可

【処理】

End If

条件分岐の際に使用します。
上記画像では指定の日付がFROMとTOの間に入っているかを判定しています。

2つの条件がある場合はAND(かつ)やOR(または)等を指定します。

IF ~ ThenとEnd Ifは必須で、Else IFやElseはなくても問題ありません。

FOR文

VBA FOR文の使い方
FOR 開始条件(i=0とか) TO 終了条件(100とかループ回数)
【処理】
Next 開始条件の変数

指定回数分、ForとNext変数の間の処理を繰り返します(ループ)。

ForとNext変数はセットであると覚えて頂ければと。
始点と終点の間はTOでつなぐこともお忘れなく。

また、Forループを抜ける際は「Exit for」を定義します。

Subプロシージャ

VBA Subプロシージャの使い方

いわゆるmain関数と同じような感じで、始点に当たります(原点にして頂点)。
複数定義も可能で、マクロの実行の際にはそれぞれ独立して実行することが出来ます。

上記のa1cellプロシージャはA1セルに「Hello World」と入れるだけの簡単な処理です。
全てのシートで適用可能です。

Subプロシージャ定義からのマクロ実行

プロシージャ定義することでマクロから実行可能です。
今いるシートはもちろん、別シートでも使用できます。

Subプロシージャ作成後の実行結果
シートが100個あっても簡単に適用されます

Functionプロシージャ

Functionプロシージャ定義
Function プロシージャ名(変数名 As 型) ※変数名はなくてもOK

  プロシージャ名 = 返却値

End Function

こちらもプロシージャではありますが、マクロの実行が出来ません。

そして返却値を返す場合はFunctionプロシージャ名に代入します。

詳しくはこちらのページもご覧ください。

リファレンス

if文の応用(電卓)

こちらのVBAをご覧ください。

Private Sub CommandButton1_Click()
    If Cells(1, 2) = 1 Then
      Cells(4, 2) = Cells(2, 2) + Cells(3, 2)
    ElseIf Cells(1, 2) = 2 Then
      Cells(4, 2) = Cells(2, 2) - Cells(3, 2)
    ElseIf Cells(1, 2) = 3 Then
      Cells(4, 2) = Cells(2, 2) * Cells(3, 2)
    ElseIf Cells(1, 2) = 4 Then
      Cells(4, 2) = Cells(2, 2) / Cells(3, 2)
    End If
End Sub

恐ろしい程シンプルなVBAです。
まずB1セルを判定し1なら加算、2なら減算、3なら乗算、4なら除算とします。
続いてB2セルとB3セルの四則演算の結果をB4セルに表示するだけです。

334×234=78,156という計算を行ってみました。
もちろん、答えは合ってます(当然)。

for文の応用(セルの色を変える)

こちらのVBAをご覧ください。

Private Sub CommandButton1_Click()
    For i = 1 To 20
    
        Cells(i, 1).Interior.Color = RGB(255, i * 10, 255)
        Cells(i, 1) = "AAA"
    
    Next i
End Sub

RGBで色指定しておりますが、Gの箇所を可変にしてセルの色を変えてます。
※初期値は(255,1,255)とマゼンタ(ピンク系)からスタート

CommandButton1をクリックすると・・・

見事に色が薄くなっていき、さらにセルに「AAA」の文字が入りました。

For文は規則的にループを回し、セルに色を持たせるという応用も効かせられます。


ねこ社員と代表の掛け合い

まとめ

備忘なのでメモ書きみたいになってすみません。

しかし、普段から使っていない場合の構文確認としては十分かと思います。

私と同じように毎日のように開発していない方がご覧になり「参考になった」と思って頂けたら幸いです。

いいなと思ったら応援しよう!