これまでの復習
前回の記事では、VBAマクロを始めるための準備として、拡張子の設定、開発タブの表示、マクロの有効化方法を紹介しました。

本記事では、VBAの基礎文法として、変数の宣言(Dim文)、条件分岐(If文)、ループ処理(For文)、セルの操作( Cells(1, 1) )の基礎を解説します。
標準モジュールをしようする想定で書いていきます。
セルの操作(Cells(1,1))

セルに値を入力する方法は以下の通りです。実行すると、アクティブなタブのA1に「こんにちは」と入力されると思います。
Sub セルA1の文字を変更する()
Cells(1,1).Value = "こんにちは"
End Sub- Cells(1,1) → A1セルを指す
- .Value = “こんにちは” → A1セルの文字(Value)を「こんにちは」に変更する
たとえば、B3セルに数値を入力する場合は Cells(3,2).Value = 100 のように書きます。
数値には””がつかないのが特徴です!慣れないうちは全てに””をつけとくと無難です。
変数の宣言(Dim文)

VBAを含め、プログラミング言語には変数という考え方があります。一般的に数学で使うxのようなものです。例を使って紹介します。
Sub Dimの例()
Dim x 'xという変数を使うことを宣言
x = "こんにちは" 'xにこんにちはという文字列を代入
Cells(1, 1).Value = x
End SubDimで変数を宣言して、=で変数に文字や数値を代入し、変数を使うことができます。変数は次のIf文やFor文で使うので、何となくでも理解しておくと楽になります。
変数の名称は好きな文字列を使うことができます。好みにもよりますが、私のよく使う変数を紹介します。
- i :For文で使用
- k :For文の中のFor文で使用
- tmp:一時的に保存する時に使用
- num:引数に使用
条件分岐(If文)

VBAで条件によって処理を分岐する場合は If ~ Then ~ ElseIf ~ Else ~ End If を使います。
Sub If文の例()
Dim x, time
time = 18
If time < 10 Then
x = "おはようございます"
ElseIf time < 17 Then
x = "こんにちは"
Else
x = "こんばんは"
End If
Cells(1, 1).Value = x
End Sub
- timeという変数が10未満なら、「おはようございます」をxに代入
- time変数が17未満なら「こんにちは」をxに代入
- time変数がそれ以外なら「こんばんは」をxに代入
- A1セルにxを入力
このように、時間によって表示内容を変更したい時などIf文を使えば条件ごとの変更が可能です。
繰り返し処理(For文)

Excel VBAで繰り返し処理を行うには For ~ Next を使います。
Sub For文の例()
Dim i
For i = 1 To 10 Step 1 'i変数に1を代入して、1ずつ増加させ、10まで続ける。
Cells(i, 1).Value = i 'i変数をセルのi行1列目に代入
Next i 'iの値が10以下ならForに戻る
End Sub
- 1行目から10行目のA列に数値を入力するプログラム
For i = 1 To 10→ iが1から10まで繰り返す- Step 1 →1ずつiを増加させる
Cells(i,1).Value = i→ A列の1行目から10行目までに1~10の値を代入
For文は少し難しいですが、形だけ知っておけば、目的の挙動になるまで数字を微調整できるのでOKです。
【練習】簡単なマクロを作成して実行する

実際にVBAでプログラムを作成し、動作を確認してみましょう。
1~10の数値を2乗してB列に表示する
Sub 数値を2乗する()
Dim i
For i = 1 To 10 Step 1
Cells(i, 1).Value = i ' A列に1~10の数字を入力
Cells(i, 2).Value = i * i ' B列にその2乗を入力
Next i
End Sub
このマクロを実行すると、A列には1~10の数値が、B列にはその2乗の値が入力されます。
まとめ
今回は、VBAの始め方から基本文法 If文、For文、Cells(1,1) の使い方まで解説しました。
基本構文の解説
- Cells(1,1).Value → セルの値を取得・設定
- Dim → 変数の宣言
- If ~ Then ~ Else → 条件分岐
- For ~ Next → 繰り返し処理
これでVBAの基本をマスターできました!
次のステップとして、配列・関数・ユーザーフォームなどを学び、より高度なマクロを作成していきましょう!









コメント