Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 変数とデータ型 | VBA基礎
ビジネス自動化のためのExcel VBA

変数とデータ型

メニューを表示するにはスワイプしてください

すべてのプロシージャには、処理中に値を一時的に保持する場所が必要です。たとえば、顧客名、累計、はい/いいえのフラグなどです。これが変数です。変数とは、メモリ上にラベル付けされた箱であり、値を格納したり後で読み出したりできます。変数は 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行だけ修正すればよく、コード全体を探し回る必要がありません。

課題

  1. Section_2_VBA_Fundamentals.xlsmで、製品名用のSub変数、価格用のString、在庫数用のDoubleを宣言するIntegerを作成。
  2. それぞれにUSB-C Hubの値をリテラルで代入。
  3. MsgBoxで3つの値を1つのメッセージとして連結して表示。
  4. Const LOW_STOCK As Integer = 20の上にSubを追加し、在庫変数と比較してMsgBoxで表示。
ヒント
expand arrow
  1. 3つの異なる型でDim行が必要 — 構文を忘れた場合はFigure 2.1を参照: Dim name As Type
  2. USB-C Hubの行はPrice 39.50, Stock 44。これらを直接代入: price = 39.50
  3. 連結には&ではなく+を使用。文字列は部分ごとに構築: "Name: " & productName & ", Price: " & price
  4. 定数はすべてのSubの外、モジュールの先頭、Option Explicitの直後に宣言。stockCountLOW_STOCK>内で<MsgBoxを使って比較 — まだIfは不要、両方の値を表示して比較を目視確認。
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  1
some-alt