VBA セルに値を入力する (Range.Value)

はじめに

Excel VBA マクロでセルに値を入れる方法を紹介します。

Range("B1").Value または Cells(1, 2).Value プロパティから、セル「B1」に値を入力できます。

Worksheets("Sheet1") または Worksheets(1) に Range や Cells を入力して、別シートのセルに値を入力できます。

値を取得するには「セルの値を取得する」をご覧ください。
セルを範囲指定するすべての方法は「セルを範囲指定して取得する」をご覧ください。
  • 目次
    • セルに値を入力する
    • セルの範囲に値を入力する
    • 別シートのセルに値を入力する

セルに値を入力する

Range の引数にセル名を指定すると、そのセルに値を入力できます。

セル「A1」に値を入れるには Range("A1").Value を入力します。

Range("A1").Value = "マクロ"
Range("B1").Value = 123
Range("C1").Value = Now
4

Cells の引数にセルの行と列の番号を指定すると、そのセルに値を入力できます。

行「2」、列「A」に値を入れるには Cells(2, 1).Value を入力します。

Cells(1, 1).Value = "A1"
Cells(2, 1).Value = "A2"
Cells(1, 2).Value = "B1"
Cells(2, 2).Value = "B2"
関数や数式を入力するには「セルに関数や数式を入力する」をご覧ください。

セルの範囲に値を入力する

セルの範囲「A1」~「B2」に同じ値を入れるには Range("A1:B2").Value または Range("A1", "B2").Value を入力します。

Range("A1:B2").Value = "マクロ"
Range("A1", "B2").Value = "マクロ"
1

セルの範囲に別々の値を入れるには (行, 列) の二次元配列に入力します。

Dim s(1, 1) As String
s(0, 0) = "A1"
s(1, 0) = "A2"
s(0, 1) = "B1"
s(1, 1) = "B2"
Range("A1:B2").Value = s
2

二次元配列がどのような形になっているのかイメージできれば、そのままセルに設定されているのがわかります。

詳しくは「二次元配列」をご覧ください。

二次元配列の最小インデックスはいくつでも構いません。自動で対応します。

Dim s(1 To 2, 1 To 2) As String
s(1, 1) = "A1"
s(2, 1) = "A2"
s(1, 2) = "B1"
s(2, 2) = "B2"
Range("A1:B2").Value = s
2

二次元配列を宣言しないで、入力したいセルの範囲を取得してから設定した方が簡単です。

Dim v As Variant
v = Range("A1:B2").Value ' (1 To 2, 1 To 2) の二次元配列を取得
v(1, 1) = "A1"
v(2, 1) = "A2"
v(1, 2) = "B1"
v(2, 2) = "B2"
Range("A1:B2").Value = v

セルの範囲の値をまとめて取得または設定すると高速に操作できます。

詳しくは「高速化」をご覧ください。

行に値を入れるには二次元配列でも一次元配列でも入力できます。

Dim s(0, 2) As String ' 二次元配列
s(0, 0) = "A"
s(0, 1) = "B"
s(0, 2) = "C"
Range("A2:C2").Value = s
Dim s(2) As String ' 一次元配列
s(0) = "A"
s(1) = "B"
s(2) = "C"
Range("A2:C2").Value = s
3

列に値を入れるには二次元配列の列を 0 にします。

Dim s(2, 0) As String ' (行, 列)
s(0, 0) = "A1"
s(1, 0) = "A2"
s(2, 0) = "A3"
Range("A1:A3").Value = s

別シートのセルに値を入力する

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

sheet1
' Sheet1 のセル「A1」に値を入力
Worksheets("Sheet1").Range("A1").Value = "Sheet1 の A1"
Worksheets(1).Range("A1").Value = "Sheet1 の A1"

' Sheet2 のセル「A1」に値を入力
Worksheets("Sheet2").Range("A1").Value = "Sheet2 の A1"
Worksheets(2).Range("A1").Value = "Sheet2 の A1"

Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表す Me. が省略されています。

' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"

標準モジュールに Range や Cells を入力すると、開いているシートのセルになります。アクティブシートを表す ActiveSheet. が省略されています。

' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"