祝・VBAプログラマー(見習い)爆誕!「スパとふゆの0からはじめるExcelマクロ 3日目」参加レポート✍️

イントロダクション:今回もゆるっと楽しくVBA!
今回も、コミュニティ「Excel-Fun.xls*」が主催する人気企画、「【VBA】スパとふゆの0からはじめるExcelマクロ」の3日目に参加してきました!😊
このイベントは、講師の和風スパゲティさん(@wafu_spaghetti)が、生徒役のふゆさん(@id_mimipr)にVBAを教える形式で進むライブ配信です。
専門用語が飛び交う難しい勉強会とは違って、ふゆさんと一緒に一歩ずつ学んでいけるので、初心者でも置いてけぼりになる心配がありません。のんびりした楽しい雰囲気の中で、今回もたくさんのことを学べました✨

3日目のハイライト!できるようになったこと4選
3日目は、これまでのおまじないのようなコードから脱却し、どんな状況でも賢く動く「本物のプログラム」を作るための土台を築いた回でした。特に感動した4つのステップを紹介します!
- 最終行の自動取得(UsedRange) これまで
For 行 = 2 To 110のように、処理する行数を直接コードに書き込んでいました。でも、これまでの固定行数では、データが増えるたびに開発者(つまり自分!)が手直しする必要がありました。ActiveSheet.UsedRange.Rows.Countを使えば、コードがデータ量を自ら判断してくれるため、一度作れば誰が使っても、データがどう変わっても壊れない、頑健なツールになるんです。 - 条件分岐で色付け(If…Then) 「もしG列の値が “みかん” だったら、その行の背景色をオレンジにする」という課題に挑戦しました。ここで学んだのが
If...Thenを使った「条件分岐」です。If Cells(行, 7) = "みかん" Thenのように書くことで、「もし○○だったら△△する」という処理ができるようになります。これは、プログラムに「目」と「判断力」を与えるようなものです。データの中身を見て、「これはみかんだから色を塗る」「これは違うから何もしない」と自分で考えて動いてくれるようになりました。 - VBAでシート関数が使える!(WorksheetFunction) これが一番の驚きでした!普段Excelで何気なく使っている
XLOOKUPのような関数が、VBAの中でもWorksheetFunction.XLookupという形でそのまま使えるんです。VBAで複雑なロジックをゼロから書くのは大変ですが、XLOOKUPのような強力なExcel関数を呼び出せることで、車輪の再発明をせずに済みます。Excelの得意なことはExcelに任せる、という賢いプログラミングの第一歩です。 - 「どのシートの?」をハッキリさせるシートの指定 これまでは省略していましたが、
Worksheets("データ2").Cells(行, 7)のように、どのシートのセルを操作するのかを明示的に書くことの重要性を学びました。スパゲティ先生が教えてくれたのですが、これを怠ると、マクロを実行中にユーザーがうっかり別のシートをクリックしただけで、関係ないシートのデータが書き換わってしまう大事故につながるそうです。慣れるまでは省略しがちですが、安定したツールを作るためには絶対に欠かせない作法ですね。

Sub 売り上げを計算する()
Dim 行 As Long
Dim 最終行 As Long
最終行 = ActiveSheet.UsedRange.Rows.Count
For 行 = 2 To 最終行
Cells(行, 10) = Cells(行, 8) * Cells(行, 9)
Next
End Sub
Sub みかんをオレンジ色にする()
Dim 行 As Long
Dim 最終行 As Long
最終行 = ActiveSheet.UsedRange.Rows.Count
For 行 = 2 To 最終行
If Cells(行, 7) = "みかん" Then
'オレンジ色にする
Cells(行, 7).Interior.Color = RGB(200, 100, 50)
'Cells(行, 7).Interior.Color = rgbOrange
End If
Next
End Sub実践!今日の集大成コード✨

今日の学びが詰まった、一番「それっぽい!」コードがこちらです!
Sub 品物名を取得する()
Dim 行 As Long
Dim 最終行 As Long
最終行 = Worksheets("データ2").UsedRange.Rows.Count
For 行 = 2 To 最終行
'商品名をマスタからXLookupで取得
'「 _」で改行ができる
Worksheets("データ2").Cells(行, 7) = WorksheetFunction.XLookup( _
Worksheets("データ2").Cells(行, 6), _
Worksheets("商品マスタ").Columns("A"), _
Worksheets("商品マスタ").Columns("B") _
)
Next
End Sub
このコードこそ、3日目の学びの集大成です。ポイント1で学んだUsedRangeを使ってデータ最終行を賢く取得し、(Worksheets("データ2")やWorksheets("商品マスタ"))で複数シートを間違いなく操作。そして、ループの中ではポイント3のWorksheetFunction.XLookupを使い、Excel関数のパワーを借りています。これらが組み合わさることで、単なる作業の自動化を超えた、実用的なデータ処理プログラムが完成するんです!
スパ先生の名言にモチベーションUP!
講義の最後に、和風スパゲティさんがこんな言葉をかけてくれました。
もうこれでもうExcel VBAはマスターですよ。明日からExcel VBAのプログラマーですって自己紹介をしてください。
これまで学んできたVBAの基本要素(変数、繰り返し、条件分岐)に、シートの指定やワークシート関数といった実用的な知識が加わったことで、本当に「プログラムを作っている」という実感が湧きました。この言葉を聞いて、学習のモチベーションが最高に高まりました!
まとめ:2週間後の自分に期待!

3日目は、最終行の自動取得、条件分岐、ワークシート関数の活用、シートの明示的な指定など、VBAを実務で使うための重要なステップをたくさん学びました。
講義の最後には、長いコードを読みやすくするための改行( _ )の使い方や、後から見返したときに処理内容を思い出すためのコメント( ' )の重要性も教わりました。
次回の講座は他のイベントがあるため2週間後とのこと。それまでに今回学んだことをしっかり復習して、自分のスキルとして定着させたいと思います!
1人で学ぶより、みんなで学んだ方が絶対楽しいですよ!私もDiscordで質問したり、他のメンバーのコードを見て勉強させてもらっています。初心者からベテランまで温かく迎えてくれるので、ぜひ参加してみてくださいね!


