VBAで自動化 VBA一覧 セル・値の取得と貼り付け 取得

【VBA】セルの値を取得して変数に入れる方法|型別の書き方も紹介

ExcelVBAでは、セルの値を取得して処理に活用することが基本中の基本といえます。その際に、セルの値を直接参照するのではなく、変数に格納してから処理を行うことで、コードの見通しが良くなり、再利用性やメンテナンス性も向上します。本記事では、Excelのセルに入力されたデータをVBAでどのように変数へ格納するかを、基本から応用まで詳しく解説します。

本記事の対象読者と目的

この記事は、VBA初心者から中級者を対象としています。特に、「セルの値を取得して処理に使いたいが、変数の使い方にまだ自信がない」「型や書き方の違いがよくわからない」といった方にとって役立つ内容となっています。最終的には、セルの値を適切なデータ型の変数に格納し、VBA内で自在に扱えるようになることを目的としています。

セルの値を変数に格納する基本構文

まずは基本的な記述方法から見ていきましょう。

Sub SampleBasic()

Dim myValue As Variant
myValue = Range("A1").Value
MsgBox myValue

End Sub

この例では、「A1セル」に入力されている値を、myValueという変数に格納し、メッセージボックスで表示しています。.Valueは省略可能なので、Range("A1")でも同じ意味になります。

【VBA】セルの値を変数に格納:ループ処理

✅ 変数の型について

VBAでは、変数を使用する際に「どのような種類のデータを格納するのか(データ型)」を意識することが非常に重要です。以下に代表的な型をいくつか紹介します。【VBA】変数のデータ型変換(型変換)の方法と注意点

データ型説明使用例
String文字列氏名や住所など
Integer整数(-32,768 ~ 32,767)年齢、件数など
Long大きな整数(約±21億)売上金額など
Double小数を含む数値割合、金額など
Date日付・時刻登録日など
Boolean真偽(True/False)チェックボックスなど
Variantどんな型でも受け入れ可能汎用的に使えるが処理速度が落ちる可能性あり

データ型を明示してセルの値を格納する

先ほどのVariant型は汎用性が高い反面、エラーを見逃したり、パフォーマンスに影響が出る場合もあるため、データ型を明示して使うのが基本です。

・文字列を格納する例

【VBA】Value 文字列に変換する方法

Sub GetString()

Dim myStr As String
myStr = Range("B2").Value
MsgBox "文字列は:" & myStr

End Sub

・数値(整数)を格納する例

【VBA】数値か否か判定(チェック)する方法

Sub GetInteger()

Dim myInt As Integer
myInt = Range("C2").Value
MsgBox "整数は:" & myInt

End Sub

・日付を格納する例

【VBA】format関数:「日時・桁数・0埋め・Now」使用方法

Sub GetDate()

Dim myDate As Date
myDate = Range("D2").Value
MsgBox "日付は:" & Format(myDate, "yyyy/mm/dd")

End Sub

・ブール値を格納する例

Sub GetBoolean()

Dim myFlag As Boolean
myFlag = Range("E2").Value
If myFlag = True Then

MsgBox "チェックされています"

Else

MsgBox "チェックされていません"

End If

End Sub

✅ Rangeオブジェクト以外の取得方法

セルの指定方法にはRange以外にも、以下のようにCellsを使った方法もあります。

【VBA】文字列(cells・range・value)として取得する方法

Dim val As String
val = Cells(1, 1).Value ' A1セルの値

この方法は、ループ処理など動的にセルを指定したい場合に便利です。

✅ ワークシートを明示する

複数のシートを操作する際は、ワークシートを明示したほうが安全です。

【VBA】アクティブシート:(指定・取得・切り替え)方法

Dim val As Variant
val = Worksheets("Sheet1").Range("A1").Value

このようにすることで、アクティブなシートに依存しない安定した処理が可能になります。

変数に格納後の活用例

変数にセルの値を格納した後は、さまざまな用途に活用できます。以下に代表的な活用パターンを紹介します。

計算処理に利用する

Sub CalculatePrice()

Dim unitPrice As Double
Dim quantity As Long
Dim total As Double

unitPrice = Range("B2").Value
quantity = Range("C2").Value
total = unitPrice * quantity

MsgBox "合計金額は " & total & " 円です。"

End Sub

条件分岐に利用する

Sub CheckScore()

Dim score As Integer
score = Range("D2").Value

If score >= 80 Then

MsgBox "合格です"

Else

MsgBox "不合格です"

End If

End Sub

エラー対策と型チェック

セルに予期しない型が入力されていると、実行時エラーが発生することがあります。以下のようなエラー対策を施すと安全です。

型を確認してから代入する

Sub SafeGetInteger()

Dim val As Variant
Dim num As Long

val = Range("A2").Value

If IsNumeric(val) Then

num = CLng(val)

MsgBox "数値:" & num

Else

MsgBox "数値ではありません"

End If

End Sub

このようにIsNumericIsDateなどの関数で事前にチェックすると、安心して代入できます。

複数セルの値を配列に格納する

セル1つではなく、複数の値を変数(配列)に格納したい場合は以下のようにします。

Sub GetMultipleValues()

Dim myArray As Variant
Dim i As Long

myArray = Range("A1:A5").Value

For i = 1 To UBound(myArray)

Debug.Print myArray(i, 1)

Next i

End Sub

この場合、2次元配列として格納されるため、「行、列」の形でアクセスします。

・まとめ

セルの値を変数に格納するという行為は、VBAの基本であると同時に、応用力にもつながる重要なスキルです。型を意識して適切に変数を使うことで、コードの可読性や保守性が向上し、より高度な処理を効率よく構築できるようになります。

これからVBAを本格的に学びたい方は、まずこの「セルの値→変数格納→活用」の流れをしっかりと身につけることをおすすめします。コードの品質を高める第一歩として、ぜひご活用ください。

-VBAで自動化, VBA一覧, セル・値の取得と貼り付け, 取得