PR

VBAの基本構文はこの3つ|Sub・If文・For文の書き方と意味【初心者向け】

vba

VBA入門

スポンサーリンク

はじめに:最初に覚える構文は3つだけ

VBAを始めたものの、「構文が多すぎて何から覚えればいいか分からない」と手が止まっていませんか。

じつは、実務のマクロのほとんどは Sub・If文・For文 の3つの組み合わせでできています。この記事では、この3つの書き方と意味を、短いサンプルコードで解説します。

この記事で分かること

  • Sub:マクロの入れ物(すべてのマクロはここから始まる)
  • If 文:条件によって処理を変える
  • For 文:同じ処理を繰り返す
  • それぞれの具体的なコードと、セルを操作する Range / Cells の読み方
VBAエディタの開き方が分からない方は、先に VBAのコードはどこに書く? を読んでください。

スポンサーリンク

① Sub:マクロの基本の形

VBAのコードは、必ず Sub で始まり End Sub で終わります。この間に処理を書きます。

Sub Sample()
    MsgBox "Hello"
End Sub
  • Sub Sample():マクロの名前。Sample の部分は自由に付けられます(日本語は不可、スペース不可)
  • MsgBox "Hello":メッセージボックスに「Hello」と表示する命令
  • End Sub:マクロの終わり

最初は「Sub と End Sub の間に命令を並べる」という決まり文句だと思って大丈夫です。


スポンサーリンク

② If文:条件で処理を変える

「〜だったら〇〇する」という条件分岐に使います。実務ではほぼ毎回登場します。

Sub Sample()
    If Range("A1").Value = "" Then
        MsgBox "未入力です"
    End If
End Sub
  • If 条件 ThenEnd If で囲みます
  • Range("A1"):セルA1を指す(セル番地はダブルクォートで囲む)
  • .Value:そのセルの値
  • = "":空っぽ(何も入っていない)かどうかの判定

このコードを言葉にすると「もしA1セルが空だったら、『未入力です』とメッセージを出す」という意味です。

If文の実行結果で未入力ですと表示されたメッセージボックス

A1が空のときにメッセージボックスが表示された様子。


スポンサーリンク

③ For文:処理を繰り返す

同じ処理を何回も繰り返すときに使います。VBAで最も重要な構文で、Excelの「行を上から順に処理する」の大半はこれです。

Sub Sample()
    For i = 1 To 10
        Cells(i, 1).Value = i
    Next i
End Sub
  • For i = 1 To 10Next i:変数 i を1から10まで1ずつ増やしながら繰り返す
  • Cells(i, 1)Cells(行, 列) でセルを指す。Cells(2, 1) はA列の2行目(A2)

このコードを言葉にすると「A1からA10まで、順に1〜10の値を入れなさい」という意味です。

For文の実行結果でA1からA10に1から10が入力されたExcel

実行するとA1〜A10に1〜10が入ります。


スポンサーリンク

まとめ:Sub・If・For の組み合わせがすべて

初心者がまず覚えるべきなのは Sub・If文・For文 の3つです。実務のマクロは、この3つの組み合わせに、セルやシートを操作する命令を足していくだけでできています。まずは小さなマクロを書いて慣れていきましょう。

前の記事・関連記事

📝 前の記事 VBAのコードはどこに書く?開発タブの表示からVBAエディタ・標準モジュール・実行まで この記事のコードを試すための、VBAエディタの開き方と実行手順です。 📘 VBAの概要 VBAとは?Excelで何ができるかを初心者向けに解説 そもそもVBAで何ができるのか、学ぶメリットは何か。

スポンサーリンク

よくある質問(FAQ)

QSub の名前に日本語やスペースは使えますか?

A使えません。半角の英数字とアンダースコア(_)で付けます。先頭に数字は置けません。例:Sub 売上集計() は不可、Sub UriageShukei() はOKです(日本語名は一部の環境で通りますが避けるのが無難です)。

QRangeCells はどう使い分けますか?

ARange("A1") のように番地で直接指定したいときはRangeCells(i, 1) のように行や列を変数で動かしたいとき(For文の中など)はCellsが便利です。

QNext ii は省略できますか?

A省略して Next だけでも動きます。ただしFor文が入れ子になったときに分かりにくくなるので、Next i のように変数名を書いておくのがおすすめです。

QIf で「AかつB」「AまたはB」はどう書きますか?

A「かつ」は And、「または」は Or を使います。例:If A > 0 And B > 0 Then

Q変数 i は宣言しなくてよいのですか?

Aこの例のように書けば動きますが、本来は Dim i As Long と宣言するのが正しい書き方です。モジュールの先頭に Option Explicit と書くと宣言が必須になり、打ち間違いに気づきやすくなります。

Q3つの構文を覚えたら、次は何を学べばよいですか?

Aセルの範囲をまとめて扱う方法(Rangeのコピー・貼り付け)、最終行の取得(End(xlUp))、複数シートやブックの操作、あたりを覚えると、実務のマクロがひととおり書けるようになります。


ニンジン🥕アイコン

Follow me on X

本ブログの中の人「ニンジン🥕」はXやってます。新着記事はいち早くポストでお知らせしているので、見逃したくない方は @ninjin_py_vba をフォローしてみてください🥕

@ninjin_py_vba をフォロー

この記事が役に立ったら、シェアしてもらえると嬉しいです🥕

Xでポスト はてブ LINE Pocket

PROJECT LOG — SERIES INDEX
スポンサーリンク

シリーズ記事一覧

電子工作・自動化ツールの製作記録をシリーズごとにまとめています。気になるテーマからお読みください。


超音波距離センサーHC-SR04をRaspberry Pi Picoで使う|仕組み・配線・精度検証
.uds1-block { position: relative; overflow: hidden; border-radius: 12px; border: 1px solid #f0cba8; background: linear-g…
今週の注目ガジェット〜09/07週〜|電子工作・自作向け新製品まとめ(TickrCast/Radxa Linkr ほか)
ニンジンのガジェット通信 09/07週。ESP32-P4の自作気象モニター、極小IP-KVM「Radxa Linkr」、ESP32のDINレール型PLC、LTE開発キットなど、電子工作で使えそうな新製品5つを解説。
サーボモータの角度をタクトスイッチで可変|OLED(SSD1306)に現在角度をリアルタイム表示
Raspberry Pi Pico 2W×MG996RにタクトスイッチとOLED(SSD1306)を追加。ボタンで角度を可変しながら現在角度をリアルタイム表示するMicroPython実装を、framebufの文字拡大やサーボの遊び対策まで実機ベースで解説します。
MG996RサーボモーターをRaspberry Pi Pico 2Wで動かす:PWM制御とキャリブレーション実践
MG996RサーボモーターをRaspberry Pi Pico 2Wで動かす方法を解説。公称180度のはずが実測198度だった個体差の原因究明から、ホーンのズレ補正、タクトスイッチでの角度制御まで実機検証の様子を紹介します。
Tapo P110Mの消費電力をExcelレポート化する【年次集計・電気代試算・セキュリティ判断編】
FastAPI+openpyxlでTapo P110Mの消費電力をExcelレポート化。15秒間隔の生ログを日次集計する設計や、31円/kWhでの電気代試算、外部公開を見送った理由まで解説します。
vba
スポンサーリンク

コメント