教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAで変数の定義と宣言方法

構文

構文は以下の通りです。

Dim 変数名 As データ型

解説

変数とは、データを格納するための仮想的な箱のことです。変数は、文字列、数値、真偽値などのデータを保存することができます。変数には保存するデータの型を宣言する必要があり、それらの型を以下で紹介します。

【一般的な型】

内容 具体例
Byte 0から255までの符号なし整数 Dim バイト型変数 As Byte
Integer -32,768から32,767までの整数 Dim 整数型変数 As Integer
Long -2,147,483,648から2,147,483,647までの整数 Dim 長整数型変数 As Long
Single 単精度浮動小数点数(約-3.4E38から3.4E38) Dim 単精度変数 As Single
Double 倍精度浮動小数点数(約-1.7E308から1.7E308) Dim 倍精度変数 As Double
Currency 通貨型(小数点以下4桁までの固定小数点数、範囲は約±922兆円) Dim 通貨型変数 As Currency
Decimal 高精度の小数点数(VBAでは直接データ型として使用できないが、Variant型で使用可能) Dim 小数型変数 As Variant
String 文字列型(最大約2GBの文字数) Dim 文字列変数 As String
Boolean 真偽値(True または False) Dim 論理型変数 As Boolean
Date 日付型(0001年1月1日から9999年12月31日まで) Dim 日付型変数 As Date
Object オブジェクト型(ExcelのRangeやWorksheetなどのオブジェクトを扱う) Dim オブジェクト変数 As Object
Variant 任意のデータ型を格納可能(型の制限がない) Dim 汎用変数 As Variant

【その他の型】

内容 具体例
Worksheet Excelのワークシートを表すオブジェクト Dim シート As Worksheet
Range ワークシート上のセル範囲を表すオブジェクト Dim セル範囲 As Range
Workbook Excelのブックを表すオブジェクト Dim ブック As Workbook
UserForm ユーザーフォーム(ダイアログボックス)を表すオブジェクト Dim フォーム As UserForm1
TextBox テキスト入力用のコントロール Dim テキストボックス As TextBox
Label 説明やタイトルなどのテキストを表示するためのコントロール Dim ラベル As Label
CommandButton ユーザーがクリックしてアクションを実行するボタン Dim コマンドボタン As CommandButton
ListBox 項目のリストを表示し、選択できるコントロール Dim リストボックス As ListBox
ComboBox ドロップダウンリストから選択できるコントロール Dim コンボックス As ComboBox
CheckBox チェックボックス(ON/OFFを選択できる)コントロール Dim チェックボックス As CheckBox
OptionButton 排他的な選択肢を提供するためのラジオボタン Dim オプションボタン As OptionButton
Chart グラフを表すオブジェクト Dim グラフ As Chart
Shape 図形、テキストボックス、画像などのオブジェクト Dim 画像 As Shape

プログラミング例

具体的なプログラミング例を紹介します。

Byte型

Dim バイト型変数 As Byte
バイト型変数 = 255

Integer型

Dim 整数型変数 As Integer
整数型変数 = 10000

Long型

Dim 長整数型変数 As Long
長整数型変数 = 1000000

Single型

Dim 単精度変数 As Single
単精度変数 = 123.45

Double型

Dim 倍精度変数 As Double
倍精度変数 = 123456.789

Currency型

Dim 通貨型変数 As Currency
通貨型変数 = 99999.99

Decimal型

Dim 小数型変数 As Variant
小数型変数 = CDec(12345.6789)

String型

Dim 文字列変数 As String
文字列変数 = "こんにちは"

Boolean型

Dim 論理型変数 As Boolean
論理型変数 = True

Date型

Dim 日付型変数 As Date
日付型変数 = #2024/09/08#

Object型

Dim オブジェクト変数 As Object
Set オブジェクト変数 = ThisWorkbook

Variant型

Dim 汎用変数 As Variant
汎用変数 = 100 '整数
汎用変数 = "文字列" '文字列

Worksheet型

Dim シート As Worksheet
Set シート = ThisWorkbook.Sheets("Sheet1")
シート.Activate

Range型

Dim セル範囲 As Range
Set セル範囲 = Range("A1:B2")
セル範囲.Value = "Hello"

Workbook型

Dim ブック As Workbook
Set ブック = Workbooks.Add
ブック.SaveAs "新しいブック.xlsx"

UserForm型

Dim フォーム As UserForm1
Set フォーム = New UserForm1
フォーム.Show

TextBox型

Dim テキストボックス As TextBox
Set テキストボックス = frm.Controls("TextBox1")
テキストボックス.Text = "こんにちは"

Label型

Dim ラベル As Label
Set ラベル = frm.Controls("Label1")
ラベル.Caption = "ラベルのテキスト"

CommandButton型

Dim コマンドボタン As CommandButton
Set コマンドボタン = Controls("CommandButton1")
コマンドボタン.Caption = "実行"

ListBox型

Dim リストボックス As ListBox
Set リストボックス = Controls("ListBox1")
リストボックス.AddItem "項目1"
リストボックス.AddItem "項目2"

ComboBox型

Dim コンボックス As ComboBox
Set コンボックス = Controls("ComboBox1")
コンボックス.AddItem "選択肢1"
コンボックス.AddItem "選択肢2"

CheckBox型

Dim チェックボックス As CheckBox
Set チェックボックス = Controls("CheckBox1")
チェックボックス.Value = True

OptionButton型

Dim オプションボタン As OptionButton
Set オプションボタン = Controls("OptionButton1")
オプションボタン.Value = True

Chart型

Dim グラフ As Chart
Set グラフ = Charts.Add
グラフ.ChartType = xlColumnClustered

Shape型

Dim 画像 As Shape
Set 画像 = ws.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50)
画像.TextFrame.Characters.Text = "テキストボックス"

まとめ

変数はデータを簡単に扱うための便利なツールです。変数を使うと、プログラムがもっとパワフルで柔軟になります。