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 条件 Then 〜 End 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 10 〜 Next 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です(日本語名は一部の環境で通りますが避けるのが無難です)。

QRange と Cells はどう使い分けますか?

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

QNext i の i は省略できますか?

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
スポンサーリンク

シリーズ記事一覧

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


GPSロガーのCSVを地図に表示する方法|Pico 2 WでGT-502MGG-NとATGM336Hを車に積んで走行・トンネル比較【Python・folium】
GPSロガーで記録したCSVを、Pythonのfoliumと地理院タイルで地図に表示する方法。GT-502MGG-NとATGM336Hを車に積んで4回走り、再起動の原因やトンネルでの違いも比べました。
今週の注目ガジェット〜10/19週〜|電子工作・自作向け新製品まとめ(Romu/W1700K SDR ほか)
大手が拾わないニッチな新製品を毎週チェック。今週はe-Paper開発キット、超小型USBボード、自作SDRなど5本立て。
GT-502MGG-NとATGM336Hの使い方|Raspberry Pi Pico 2 WとMicroPythonでGPSを受信して2台を比較
GT-502MGG-NとATGM336Hの使い方を、Pico 2 W×MicroPythonで解説。北斗で衛星数が多いATGM336H、信号が強いGT-502MGG-N。単精度floatで緯度経度が約1.4m刻みになる落とし穴も紹介します。
今週の注目ガジェット〜10/12週〜|電子工作・自作向け新製品まとめ(Q8botOne/Sipeed SLogic32U3 ほか)
大手が拾わないニッチな新製品を毎週チェック。今週は四足歩行ロボット、ロジックアナライザー、広告ブロッカーなど5本立て。
MOSFETはPicoの3.3Vで足りる?DCソレノイド駆動でゲート電圧不足を実測【Pico 2 W】
Pico 2 WとMOSFET(IRLU3410)で12VのDCソレノイドを駆動。ゲート3.3Vでは発振し、オン抵抗も約2.4倍に。レベル変換で5V駆動にした比較と、電流が8割止まりだった本当の原因を実測で紹介します。
まとめハブ
vba
スポンサーリンク

コメント