変数への格納 オブジェクトRange

Range
スポンサーリンク
スポンサーリンク

1. はじめに:なぜセルの値を変数に格納するのか?

Excel VBAでは、ワークシート上のセルに格納されている値を取得し、それを処理・分析・再利用する必要がよくあります。その際、セルの値を一度変数に格納しておくことで、以下のような利点があります:

  • 再利用性の向上
  • 計算や条件判定への利用
  • ワークシート以外(メッセージボックスやファイル名など)での活用
  • 値の保持・保存

2. 変数への格納の基本構文

Dim 変数名 As データ型  
変数名 = Range("セル番地").Value

● 例1:文字列を格納

Dim name As String
name = Range("A1").Value

● 例2:数値を格納

Dim price As Double
price = Range("B2").Value

3. データ型と変数宣言

セルの値には、さまざまなデータ型が使われています。適切な型で宣言することで、処理の効率と安全性が高まります。

データ型説明使用例
String文字列氏名、住所など
Integer整数(-32,768~32,767)個数など
Long大きな整数行番号、IDなど
Double小数を含む数値金額、割合など
Date日付生年月日など
Variant任意(自動判定)型を特定できないとき

4. Value の省略と Text との違い

Range("A1")          ' ⇒ Range("A1").Value と同じ
Range("A1").Value2 ' ⇒ 値の高速取得(Valueとほぼ同じ)
Range("A1").Text ' ⇒ 表示形式に応じた文字列

● 違いの例

セルに「2025/6/30」と入力されており、表示形式が「yyyy年m月d日」の場合:

Dim d As String
d = Range("A1").Value ' ⇒ "2025/6/30"
d = Range("A1").Text ' ⇒ "2025年6月30日"

5. 相対参照でのセル値取得

Dim result As Variant
result = ActiveCell.Offset(1, 0).Value

→ アクティブセルの1行下の値を取得


6. 配列への格納(複数セルの取得)

複数のセルから値を取得して変数に保持したいときは、配列を使います。

Dim data As Variant
data = Range("A1:C3").Value

data(1,1) は A1、data(2,2) は B2 の値になります。

● 配列の利用例

im i As Long
For i = 1 To 3
Debug.Print data(i, 1) ' A列の値を出力
Next i

7. 変数に格納した値の活用例

● 条件分岐

Dim age As Integer
age = Range("B2").Value

If age >= 20 Then
MsgBox "成人です"
Else
MsgBox "未成年です"
End If

● 他のセルに反映

Dim total As Double
total = Range("C2").Value + Range("D2").Value
Range("E2").Value = total

8. 型がわからないときの対処法:Variant 型

Dim x As Variant
x = Range("A1").Value

If IsNumeric(x) Then
MsgBox "数値です:" & x
ElseIf IsDate(x) Then
MsgBox "日付です:" & x
Else
MsgBox "文字列です:" & x
End If

Variant は万能型なので、型が未確定な場合や汎用処理に有効です。


9. 文字列結合やファイル名の生成に応用

Dim filename As String
filename = Range("A1").Value & "_報告書.xlsx"
MsgBox "保存するファイル名は:" & filename

→ セルの値を使って動的にファイル名やメッセージを作成できます。


10. よくあるエラーと対処

エラー内容原因対処法例
型が一致しません(Type Mismatch)セルに数値がなく文字列が入っているVariant で受ける、型を変える
配列のインデックスが範囲外配列の範囲を誤って指定LBoundUBound を使って確認
空白セルに対して処理を行っている値が ""Empty の可能性If cell.Value <> "" Then などでチェック

まとめ

技法説明
Range().Valueセルの値を変数に格納する基本
OffsetCells を併用相対的に値を取得する手段
配列で複数セルを取得2次元配列として柔軟に扱える
Variant 型で安全な取得型に不安があるときに便利
条件分岐・ファイル名・メッセージへの利用変数に格納した値の活用法多数
タイトルとURLをコピーしました