VBA入門
はじめに:最初に覚える構文は3つだけ
VBAを始めたものの、「構文が多すぎて何から覚えればいいか分からない」と手が止まっていませんか。
じつは、実務のマクロのほとんどは Sub・If文・For文 の3つの組み合わせでできています。この記事では、この3つの書き方と意味を、短いサンプルコードで解説します。
この記事で分かること
Sub:マクロの入れ物(すべてのマクロはここから始まる)If文:条件によって処理を変えるFor文:同じ処理を繰り返す- それぞれの具体的なコードと、セルを操作する
Range/Cellsの読み方
① Sub:マクロの基本の形
VBAのコードは、必ず Sub で始まり End Sub で終わります。この間に処理を書きます。
Sub Sample()
MsgBox "Hello"
End SubSub Sample():マクロの名前。Sampleの部分は自由に付けられます(日本語は不可、スペース不可)MsgBox "Hello":メッセージボックスに「Hello」と表示する命令End Sub:マクロの終わり
最初は「Sub と End Sub の間に命令を並べる」という決まり文句だと思って大丈夫です。
② If文:条件で処理を変える
「〜だったら〇〇する」という条件分岐に使います。実務ではほぼ毎回登場します。
Sub Sample()
If Range("A1").Value = "" Then
MsgBox "未入力です"
End If
End SubIf 条件 Then〜End Ifで囲みますRange("A1"):セルA1を指す(セル番地はダブルクォートで囲む).Value:そのセルの値= "":空っぽ(何も入っていない)かどうかの判定
このコードを言葉にすると「もしA1セルが空だったら、『未入力です』とメッセージを出す」という意味です。
③ For文:処理を繰り返す
同じ処理を何回も繰り返すときに使います。VBAで最も重要な構文で、Excelの「行を上から順に処理する」の大半はこれです。
Sub Sample()
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End SubFor i = 1 To 10〜Next i:変数iを1から10まで1ずつ増やしながら繰り返すCells(i, 1):Cells(行, 列)でセルを指す。Cells(2, 1)はA列の2行目(A2)
このコードを言葉にすると「A1からA10まで、順に1〜10の値を入れなさい」という意味です。
よくある質問(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 をフォローシリーズ記事一覧
電子工作・自動化ツールの製作記録をシリーズごとにまとめています。気になるテーマからお読みください。
-
FILE.01 — IoT
Raspberry Pi Pico W × GASラズパイPico W×GASで自作!「LINEで動く温湿度&スマートリモコン」完全ロードマップ
「外出中のペットの室温が心配…」そんな思いからスタートしたIoT自作プロジェクトの総集編。温湿度監視からエアコン遠隔操作まで、仕組みをゼロから作りたい方のための全5回の開発記録です。
シリーズを読む -
FILE.02 — CNC
Arduino × レーザー刻印CNCCNC自作シリーズ
高精度な加工を目指し、本格的な自作CNC製作に挑戦中。現在は基幹パーツであるオリエンタルモーターの納品を待つ「設計・準備編」を公開。ハードとソフトの両面から、理想のマシンを形にする過程をリアルタイムにお届けします。
シリーズを読む -
FILE.03 — XY軸制御
Raspberry Pi × ステッピングモーターXYテーブルシリーズ
Raspberry Piとステッパモーターを使い、ゼロから2軸制御に挑む記録。OS設定から回路設計、多軸制御のPythonコードまで、躓きやすいポイントを徹底図解。電子工作初心者が「動く感動」を味わうための実戦ガイドです。
シリーズを読む -
FILE.04 — 業務自動化
Python × Excel × CustomTkinter【Python開発記】NINJIN Mail制作記
PythonとExcelを連携させ、実務で即戦力となるメール送信ツールを開発。CustomTkinterによるUI構築や、ミスを防ぐテンプレート活用術など、現場の「痒い所に手が届く」自動化ノウハウを細部まで丁寧に解説します。
シリーズを読む -
FILE.05 — 業務自動化
Python × Excel × GUIアプリ化Invoice Maker(請求書・見積書自動作成)
手作業の請求書作成から卒業!PythonでExcelデータを読み込み一括PDF化する「Invoice_Maker」の作り方を全3回で解説。基本ロジックからGUIアプリ化まで、実務で役立つ自動化ノウハウが満載です。
シリーズを読む




コメント