Excel VBA開発環境を整えたら最初に書きたい簡単なVBAスクリプト例を初心者向けに解説
生徒
「ExcelでVBAの開発環境は準備できたんですが、最初に何を書けばいいのか分かりません…」
先生
「それは多くの初心者が悩むところですね。まずは動いたと実感できる簡単なスクリプトから書くのが大切です」
生徒
「パソコン操作も慣れていないので、できるだけ簡単なものがいいです」
先生
「では、Excel VBAの基本が自然に身につく例を順番に見ていきましょう」
1. 開発環境を整えた直後にスクリプトを書く意味
Excel VBAの開発環境を整えたばかりの状態では、まだVBEやマクロの動きに慣れていません。そのため、難しい処理を書く前に、まずは「動いた」という体験をすることが重要です。
これは、自転車に初めて乗るときに、いきなり遠くまで走らず、少しだけ進んで感覚をつかむのと同じです。簡単なVBAスクリプトを書くことで、自信がつき、操作にも慣れていきます。
2. まずはメッセージを表示するVBAを書いてみよう
最初におすすめなのが、画面にメッセージを表示するスクリプトです。Excel VBAでは、MsgBoxという命令を使うと、簡単にメッセージを表示できます。
これは、パソコンに「ここに文字を出して」とお願いするようなものです。
Sub FirstMessage()
MsgBox "はじめてのVBAです"
End Sub
このスクリプトを実行すると、小さなウィンドウが表示され、文字が出てきます。
はじめてのVBAです
3. マクロの基本構造を理解しよう
VBAのプログラムは、Subから始まり、End Subで終わります。このかたまりをプロシージャと呼びます。
プロシージャとは、「ひとまとまりの作業」という意味です。料理でいうと、レシピ一つ分のようなものです。
名前は自由に付けられますが、何をするマクロなのか分かる名前にすると管理しやすくなります。
4. セルに文字を書き込む簡単なVBA
次に、Excelらしい動きを体験してみましょう。VBAを使うと、セルに自動で文字を書き込むことができます。
これは、手で入力する作業をVBAに任せるイメージです。
Sub WriteCell()
Range("A1").Value = "VBAで入力しました"
End Sub
実行すると、A1セルに文字が表示されます。
A1セルに「VBAで入力しました」と表示される
5. 変数を使った超シンプルな例
変数とは、数字や文字を一時的に入れておく箱のようなものです。VBAでは、後から使う値を保存するために使います。
難しく考えず、「名前付きのメモ帳」くらいの感覚で大丈夫です。
Sub UseVariable()
Dim message As String
message = "変数を使いました"
MsgBox message
End Sub
この例では、文字を変数に入れてから表示しています。
6. 処理が順番に動くことを確認するスクリプト
VBAは上から順番に処理を実行します。この流れを確認するために、メッセージを二回表示してみましょう。
Sub OrderTest()
MsgBox "最初の処理です"
MsgBox "次の処理です"
End Sub
このように、書いた順番どおりに動くことが体感できます。
7. エラーを恐れず試すことが大切
初心者のうちは、エラーが出ることもあります。しかし、エラーは失敗ではなく、VBAが「ここが分からない」と教えてくれているサインです。
簡単なスクリプトを何度も書いて実行することで、VBEの操作やエラーメッセージにも自然と慣れていきます。
8. 最初のスクリプトは成功体験を重視しよう
開発環境を整えた直後は、難しいことをしようとせず、確実に動くシンプルなVBAを書くことが重要です。
「自分で書いたマクロが動いた」という体験が、Excel VBA学習の大きな原動力になります。
今回紹介したスクリプトは、どれもExcel VBAの基礎となる考え方が詰まっています。
まとめ
ここまで、Excel VBAの開発環境を整えたばかりの方に向けて、最初の一歩となる基本的なスクリプトの書き方を詳しく解説してきました。VBA(Visual Basic for Applications)は、一見すると難解なプログラミング言語のように感じるかもしれませんが、その本質は「Excelへの指示書」を作成することにあります。最初は「MsgBox」で画面に文字を出す、あるいは「Range」を使って特定のセルに値を入力するといった、視覚的に変化がわかりやすいものから手を付けるのが継続のコツです。
VBA初心者が効率よく上達するためのポイント
プログラミングの学習において、最も重要なのは「暗記」ではなく「構造の理解」と「反復」です。今回紹介したように、全てのプログラムは Sub で始まり End Sub で終わるという型があります。この中に、どのような命令(メソッド)を、どのような対象(オブジェクト)に対して実行するかを記述していくのが基本スタイルです。
また、実務で役立てるためには、単にコードを書くだけでなく、実際にどのようなシーンで自動化が必要かを常に意識しておくことも大切です。例えば、毎日の定型作業であるデータの転記や、特定の条件に基づいた書式設定の変更などは、VBAが最も得意とする分野です。
さらにステップアップするためのサンプルコード
基礎を理解したところで、もう少しだけ実践的なコードに挑戦してみましょう。複数のセルに対して一括で処理を行ったり、計算結果を表示したりするコードです。これらを活用することで、手作業で行っていたルーチンワークが劇的に短縮されます。
セルの値を足し算して結果を表示する
例えば、セルB2とB3に入力されている数値を合計し、その結果をメッセージボックスで表示するコードは以下のようになります。
Sub SimpleCalculation()
Dim val1 As Integer
Dim val2 As Integer
Dim total As Integer
'セルの値を変数に代入
val1 = Range("B2").Value
val2 = Range("B3").Value
'計算を行う
total = val1 + val2
'結果を表示
MsgBox "合計金額は " & total & " 円です。"
End Sub
実行結果は以下のようになります。数値のやり取りをVBAで行う感覚を掴んでください。
合計金額は 3000 円です。
Office Scripts(TypeScript)との違いについて
最近では、Web版のExcelなどで利用できる「Office Scripts」という技術も注目されています。VBAがデスクトップ版Excelの自動化に特化しているのに対し、Office Scriptsはクラウド環境での自動化に適しています。文法はJavaScriptやTypeScriptベースですが、基本的な考え方は似ています。将来的にクラウド自動化も見据えるなら、少しずつ触れておくと良いでしょう。
参考までに、Office ScriptsでA1セルに文字を入力するコードは以下の通りです。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("Office Scriptsで入力");
}
このように、VBAを学ぶことは他の言語やツールを学ぶ際の強力な土台となります。エラーが出ても慌てず、デバッグ(修正)を繰り返すことで、確実にスキルは身につきます。まずは今回紹介した小さな成功体験を積み重ねて、自分専用の便利なツールを作ってみてください。業務効率化への道は、この一行のコードから始まります。
生徒
「先生、ありがとうございました!メッセージボックスが出たときは、なんだかパソコンを魔法で動かしているみたいでワクワクしました。」
先生
「そのワクワク感が一番大切ですよ。プログラムが自分の書いた通りに動く感覚は、一度味わうと病みつきになりますよね。」
生徒
「はい!でも、変数とかRangeとか、少し聞き慣れない言葉も出てきたので、そこはしっかり復習して覚えたいと思います。特に『Dim』って何のおまじないだろうって思ってました。」
先生
「良い質問ですね。Dimは『Dimension(次元)』の略で、メモリの中にデータを置くためのスペースを確保するという意味なんです。最初は深く考えすぎず、『これから箱を使いますよ』という宣言だと捉えておけば大丈夫ですよ。」
生徒
「なるほど、箱の準備なんですね。まずはセルに文字を入れたり、色を変えたりすることから試して、少しずつ職場のエクセルファイルを自動化してみたいです。」
先生
「素晴らしい目標です!まずは小さな一歩から。失敗してもエクセルが壊れるわけではありませんから、どんどん実験して、VBAを自分の味方にしていきましょうね。応援しています!」
生徒
「ありがとうございます!明日からも楽しみながらコードを書いてみます!」