エクセル VBAでHELLO WORLD

2025/07/14

VBA プログラミング

 私は学生時代からエクセルが苦手(食わず嫌いなところがあると思いますが...)で勉強するのを避けてました。個人で何かする場合はPythonなどで何とかできるのですが、会社などで何かするとなった場合、やはりVBAのほうが使い勝手がいい場面があるため、今回勉強しました。

私の環境は下記の通りです。

OS:Windows 11
エクセル:Microsoft® Excel® 2021

VBAを始める準備

通常プログラミングを始める場合は開発環境を整える必要がありますが、VBAの場合はOfficeをインストールする際にVBE(Visual Basic Editor)というものが一緒にインストールされているため、開発環境を整えるのがほかの言語に比べて楽です。

VBEは最初からインストールされていると説明しましたが、デフォルトの設定では使えません。ここではVBEを使えるようにする初期設定を紹介します。

まず初めにファイルを押下します。

一番左のメニュー画面にある"オプション"を押下します。

そのあと、"リボンのユーザー設定"→メインタブより"開発"にチェックを入れます


これでリボンタブに"開発"タブが表示されるようになりました。


開発タブに行くと下記の"Visual  Basic"という項目があるためこれを押下するとVBEを開くことができます。(Alt+F11でも開くことができます。)


Visual Basicを開くと下記のような画面が開き、ようやくスタートラインに立つことができました。


VBAでHello Worldを記述する

スタートラインに立つことができたので、いよいよHello Worldを記述します。まず初めに標準モジュールを作ります。標準モジュールは"挿入"→"標準モジュール"から作成することができます。標準モジュールを作成すると下記のようにコードを記述することができる画面が作成されます。

それではHellow Worldを記述していきます。VBAでは下記のようにSubとEnd Subの間に実行したいことを記述します。書き方はシンプルでSubの後にプロージャー名(処理の塊程度に理解してください。)と()を記載します。

プロージャー名を書いたら次の行に処理を記載します。C言語などの場合は処理の終わりにセミコロン;を入れて処理の終わりを記述しますが、VBAの場合は1行で1つの処理を記述します。(長くなった場合、_を使うことで複数行またいだ記述はできますが、ここでは紹介しません)このあたりの書き方は最近流行りのPythonと似てますね。


Sub プロージャー名()
    処理
End Sub
 

VBAの場合はプロージャー名は一般的にキャメルケースで記述することが多いみたいです。
(知らない人向けの捕捉になりますが、キャメルケースはHelloWoldのように単語の先頭を大文字で記述する命名規則のことを言います。パスカルケースという場合もあるみたいですが、詳細はこちらの記事を参考にしてください。)

前置きが長くなってしまいましたが、ここからHello Worldのサンプルプログラムを作成していきます。

Sub HelloWorld()
    MsgBox "Hello World!" 'メッセージボックスを使ってHello World
End Sub

今回はプロージャー名をHelloWorldにしました。ここで紹介ですが、VBAの場合はコメントはシングルクォーテーション'の後に記述します。上記の場合、'メッセージボックスを使ってHello Worldという記載はコメントのため、プログラムには一切影響を与えません。

それでは記述が終わったらこれを実行します。実行の仕方は先ほどの画面でF5を押下するか、下記赤枠で囲んだ再生マークを押下してください。


そうすると下記のようにHello Worldというメッセージボックスが出力されました。

これでHello Worldは終了です。もし、プログラムを実行する場合にエラーが起きた場合は下記を確認してみてください。

プロージャー名が適切か?

プロージャー名で下記は使うことができないため、使ってないか再確認してください。
  1. 先頭に数字や記号、スペースを使っていないか(例えば、1HelloWorldなど)
  2. 全角、空白、記号、特殊文字などプロージャー名として使えない文字列が途中に入ってないか?(例えばHello Worldなど途中にスペースがないか)
  3. VBAが予約語として確保している文字列(例えばSubやFunctionなど)を使ってないか?

MsgBoxの書き方が適切か?

紹介し忘れてましたが、VBAの場合、文字列を記述する場合はダブルクォーテーション""で文字列を囲みます。文字列を""で囲んでいるか確認してみてください。

他にもMsgBoxの次に全角スペースが入っているなどがあると思い、試しましたが実行時にVBEの方で適切に修正してくれる挙動をしてました。問題はないものの普段から注意をしておくと何かトラブルがあった際に気が付くことができると思います。




自己紹介

はじめまして 社会人になってからバイクやプログラミングなどを始めました。 プログラミングや整備の記事を書いていますが、独学なので間違った情報が多いかもしれません。 間違っている情報や改善点がありましたらコメントしていただけると幸いです。

X(旧Twitter)

フォローお願いします!

ラベル

QooQ