【実際にVBAを書こう】まずはここから!世界にあいさつをしてVBAに触れよう

【実際にVBAを書こう】まずはここから!世界にあいさつをしてVBAに触れよう

最終更新日:

VBAってどうやって書くの?

VBAを始めてみたいけど、何をすればいいか分からない

プログラミング学習において、まずやるべきことが世界にあいさつすることです。
これは、どのような構文でどう実行するかを学ぶのにとても便利で、プログラミング界隈ではとても有名な練習方法です。

この記事では、ExcelVBAで出力できる場所に対して 「Hello World!」 を出力し、実際のVBAの書き方を学んでいただきます。

「VBAを勉強したいけど、何をしたらいいか分からない!」という方は必見の内容となっていますので、ぜひ参考にしてください。

イミディエイトウィンドウ

1つ目は、イミディエイトウィンドウに出力する方法です。

イミディエイトウィンドウの詳しい解説は以下の記事で解説しています。

早速、標準モジュールを追加し、以下の通り記述してみましょう。

Sub イミディエイトウィンドウ()
    Debug.Print "Hello,World!"
End Sub
らるじゅ らるじゅ

Debug.Printがイミディエイトウィンドウに出力するための処理になります。

実行すると、イミディエイトウィンドウに「Hello,World!」と表示されていることが確認できると思います。
※実行する場合は、作ったプロシージャ内でF5を押すと早く実行できます。

イミディエイトウィンドウはデバッグ時の確認や、処理のログ(実行した・エラーを吐き出す など)によく使うので、イミディエイトウィンドウに出力する方法Debug.Printは覚えておきましょう。

メッセージボックス

2つ目は、メッセージボックスに出力する方法です。
メッセージボックス自体がかなり使う機能ですので、ここである程度身に付けておきましょう。

コードは以下の通りです。

Sub メッセージボックス()
    MsgBox "Hello,World!", vbInformation, "ここはタイトル"
End Sub

メッセージボックスとして出力するためには、「MsgBox」関数を使います。
この関数にはいくつか引数がありますが、「Hello,World!」の部分(メインとなる文字列部分)以外は必須ではありません

このコードを実行すると以下のようなメッセージボックスが表示されると思います。

コードと照らし合わせながら解説をすると、

コード解説
  • 第1引数
    • Hello,World!の部分
      └メインとなる文言部分です。
  • 第2引数
    • vbInformationの部分
      └ここはメッセージボックスのスタイル(アイコン)やボタンの種類を変更できる部分です。
      • VBA特有の定数を指定してあげる必要があります。
      • 上記の場合、情報アイコンが付与されます。
        ※この引数は数字でも指定可能ですが、「vb~」の定数の方が覚えやすい+クイックヒントが表示されるので、定数を使うことが基本です。
  • 第3引数
    • ここはタイトルの部分
      └ここには、タイトルとして表示する文字列を設定します。
      省略すると「Microsoft Excel」になります。

セル

3つ目は、セルに出力する方法です。
ExcelVBAならではの方法になります。

コードは以下の通りです。

Sub セル()
    ThisWorkbook.Worksheets(1).Cells(1, 1).Value = "Hello,World!"
    ActiveWorkbook.Worksheets("Sheet1").Range("B2").Value = "Hello,World2!"
End Sub

実行すると、以下の通りセルに出力されます。

コードの1行目がセルA1、2行目がセルB2に出力する処理となっています。

セルに関する記述をする際の基本形はブック.シート.セル.プロパティです。
ブック・シート・セルを特定するやり方は様々ありますが、基本形は上記コードの2種類を覚えておけば大丈夫です。

なお、他のブックを指定する際はブックオブジェクトを作るほうがやりやすいです。

また、シートとセルを特定する場合は「変数に名前を格納する」か「番号で指定する」のどちらかの方法だと、コードがスマートになります。

ユーザーフォーム

4つ目は、ユーザーフォームに出力する方法です。

まずは、ユーザーフォームを作りましょう。
ユーザーフォームモジュールを追加し、ラベルとコマンドボタンを追加します。
※レイアウトはご自由に

標準モジュールに以下のコードを準備します。

Sub ユーザーフォーム()
    UserForm1.Label1.Caption = "Hello,World!"
End Sub

そして、ユーザーフォームに戻り、コマンドボタンをダブルクリックしてコードを表示させ、以下のコードを準備します。

Private Sub CommandButton1_Click()
    Call ユーザーフォーム
End Sub

ここまで準備ができたら、ユーザーフォームに戻ってF5で実行します。
すると、ユーザーフォームが表示されるので、ボタンをクリックします。

このように、ラベルが「Hello,World!」に変わりました。

処理の流れとしては…
  • フォームのコマンドボタンをクリック
  • 関数「ユーザーフォーム」を呼ぶ
  • UserForm1のLabel1のテキストをHello,World!に変更する

となっています。

ユーザーフォームを扱う場合はセルと同じようにフォーム名.オブジェクト名(テキストボックスやラベルなど).プロパティです。

上記の場合、UserForm1のLabel1のテキストに対して、「Hello,World!」を代入するという意味になります。
また、ユーザーフォームはユーザーフォーム内のコード以外でも扱うことができますが、イベント(クリックされた時など)はユーザーフォーム内のコードに記述する必要があります。

まとめ|出力先を覚えてVBAを使いこなそう

今回は、プログラミング学習で誰もが通る「Hello,World!」を表示する方法をExcelVBAで行いました。

非常に簡単なコードではありますが、どこでどう記述するのか・実行したらどんな動きをするのかなど、学ぶべき点はたくさんあります。

プログラミングは基本的に、インプット(入力)→加工・編集→アウトプット(出力) を組み合わせたり、繰り返したりして成り立っています。
まずは、アウトプットする方法を身に付けて、加工方法・インプットの場所・方法を身に付ければ立派なシステムを作ることができます。

焦らずに、1つずつ理解しながら身に付けていきましょう。