変数とデータ型
メニューを表示するにはスワイプしてください
すべてのプロシージャには、処理中に値を一時的に保持する場所が必要です。たとえば、顧客名、累計、はい/いいえのフラグなどです。これが変数です。変数とは、メモリ上にラベル付けされた箱であり、値を格納したり後で読み出したりできます。変数は Dim(「dimension」の略)で作成し、VBAにあらかじめどのような種類の値を保持するかを伝えます。
Dim productName As String
Dim currentStock As Integer
Dim unitPrice As Double
各行はラベル付きのスロットを確保します。productName にはテキストのみ、currentStock には整数のみ、unitPrice には小数を含む数値のみが格納されます。型を宣言することは単なる形式的な手続きではなく、VBAがバグになる前にミスを検出できる仕組みです。たとえば productName = 47 を実行しようとすると、VBAは型の不一致エラーで即座に止めてくれます。これにより、誤った値が静かに保存されて後で混乱を招くことを防げます。
主なデータ型
目安として、カウンターや行番号には Long ではなく Integer を使用します。現代のExcelでは速度に差はなく、大きなデータセットでもオーバーフローしません。本コースでも Dim i As Long が頻繁に登場します。
Option Explicit
この1行をすべてのモジュールの先頭、どの Sub よりも前に記述します。これにより、Dim で宣言していない変数を使うとVBAが実行を拒否するようになります。
Option Explicit
Sub Example()
Dim total As Double
total = 100 ' works — declared above
toatl = 200 ' typo — Option Explicit catches this at compile time
End Sub
Option Explicit がない場合、このタイポは新しい変数totalを暗黙的に作成してしまい、なぜtotalが変わらないのか20分も悩むことになります。この習慣だけで、この章で紹介するどの方法よりも多くのバグを防げます。
定数
定数は、コード実行中に値が変わらない名前付きの値です。税率や閾値などに最適です。
Const REORDER_THRESHOLD As Integer = 20
REORDER_THRESHOLD を使えば、20 を入力する代わりに、ビジネスルールが変わったときも1行だけ修正すればよく、コード全体を探し回る必要がありません。
課題
Section_2_VBA_Fundamentals.xlsmで、製品名用のSub変数、価格用のString、在庫数用のDoubleを宣言するIntegerを作成。- それぞれに
USB-C Hubの値をリテラルで代入。 MsgBoxで3つの値を1つのメッセージとして連結して表示。Const LOW_STOCK As Integer = 20の上にSubを追加し、在庫変数と比較してMsgBoxで表示。
- 3つの異なる型で
Dim行が必要 — 構文を忘れた場合はFigure 2.1を参照:Dim name As Type。 - USB-C Hubの行はPrice 39.50, Stock 44。これらを直接代入:
price = 39.50。 - 連結には
&ではなく+を使用。文字列は部分ごとに構築:"Name: " & productName & ", Price: " & price。 - 定数はすべての
Subの外、モジュールの先頭、Option Explicitの直後に宣言。stockCountとLOW_STOCKは>内で<やMsgBoxを使って比較 — まだIfは不要、両方の値を表示して比較を目視確認。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください