Excel VBA セルの値を取得/設定するサンプル

エクセルのVBAのセルの値を取得/設定するサンプルです。

目次

取得する セルの値を取得する (Range/Cells)
  セルの表示値を取得する(text)
  複数のセルの値を配列で取得する (Range)
  別シートのセルを指定して値を取得する (Sheets)
設定する セルに値を設定する (Range/Cells)
  セルを範囲で指定して値を設定する (Range)
  セルにエクセル関数を設定する(Formula)
  配列の値をループで横に並べて設定する
  配列の値をループで縦に並べて設定する
  別シートのセルを指定して値を設定する (Sheets)

セルの値を取得する (Range/Cells)

値 = Range("位置").Value
値 = Cells(行の位置,列の位置).value

RangeまたはCellsで位置を指定してValueで値を取得します。

Sub test1()

    ' A1のセルの値を取得
    Debug.Print Range("a1").Value '赤
    
    ' B2のセルの値を取得
    Debug.Print Cells(2, 2).Value '黄
    
    ' C3のセルの値を取得
    Debug.Print Cells(3, "C").Value '青
    
End Sub

4行目は、Rangeでセルを指定してValueで値を取得しています。
7行目の(2,2)は、(2行目、2列目)を表します。
10行目の(3,"C")は、(3行目、C列)を表します。
注:「#N/A」という文字列を取得した場合、エラー(2042)になります。

 

セルの表示値を取得する(text)

Sub test1()

    Debug.Print Cells(1, 1).Text '値または####
    
End Sub

注:セル幅が狭く####と表示されているときは、値ではなく####を取得します。

 

複数のセルの値を配列で取得する (Range)

上記のB2,C2,D2の値を取得します。

Sub test1()
    
    Dim a As Variant
    
    a = Range("b2:D2")
    
    Debug.Print a(1, 1) 'aが出力される
    Debug.Print a(1, 2) 'aが出力される
    Debug.Print a(1, 3) 'aが出力される
End Sub

5行目は、複数のセルの値を取得しています。
取得した値は7行目以降のように2次元配列になります。

 

別シートのセルを指定して値を取得する (Sheets)

Sheets("シート名").Range("位置").Value
Sheets("シート名").Cells(行の位置,列の位置).Value

別シートの指定は、Sheets(シート名)を使用します。

Sub test1()

    ' sheet2のA1のセルの値を取得
    Debug.Print (Sheets("sheet2").Range("a1").Value)
    
    ' sheet2のB2のセルの値を取得
    Debug.Print (Sheets("sheet2").Cells(2, 2).Value)
    
End Sub

4行目は、「sheet2」を指定しRangeを使用しています。
7行目は、Cellsを使用しています。

セルに値を設定する (Range/Cells)

Range("位置").Value = 値
Cells(行の位置,列の位置).value = 値

RangeまたはCellsで位置を指定してValueに値を設定します。

Sub test1()

    ' A1のセルに値を設定
    Range("a1").Value = "赤"
    
    ' B2のセルに値を設定
    Cells(2, 2).Value = "黄"
    
    ' C3のセルに値を設定
    Cells(3, "C").Value = "青"
    
End Sub

7行目の(2,2)は、(2行目、2列目)を表します。
10行目の(3,"C")は、(3行目、C列)を表します。

セルを範囲で指定して値を設定する (Range)

Range("位置:位置").Value = 値
Range("位置","位置").Value = 値

Rangeは、セルを範囲で指定できます。

Sub test1()

    ' b2からc2のセル範囲を表す
    Range("b2:c2").Value = "test3"
    
    ' b4からc6のセル範囲を表す
    Range("b4", "c6").Value = "test4"
    
End Sub

4行目は、Rangeで2つのセルを「コロン」で区切っています。
7行目は、Rangeで2つのセルを「カンマ」で区切っています。

セルにエクセル関数を設定する(Formula)

Sub test1()

    Sheets("Sheet2").Cells(1, 2).Formula = "=sum(a1:a3)"
    
End Sub

3行目は、Formulaでエクセル関数の合計のsumを設定しています。
関数の最初にイコール(=)が必要です。
Formulaは、式という意味です。

配列の値をループで横に並べて設定する

Sub test1()

    arr = Array(10, 20, 30, 40, 50)
    
    For i = 0 To UBound(arr)
        Cells(2, i + 1).Value = arr(i) '
    Next
    
End Sub

3行目は、配列です。
6行目のCellsの横の位置をループの変数にしています。

配列の値をループで縦に並べて設定する

Sub test1()

    arr = Array(10, 20, 30, 40, 50)
    
    For i = 0 To UBound(arr)
        Cells(i + 1, 2).Value = arr(i) '
    Next
    
End Sub

3行目は、配列です。
6行目のCellsの縦の位置をループの変数にしています。

別シートのセルを指定して値を設定する (Sheets)

Sheets("シート名").Range("位置").Value = 値
Sheets("シート名").Cells(行の位置,列の位置).Value = 値

別シートの指定は、Sheets(シート名)を使用します。

Sub test1()

    ' sheet2のA1のセルに値を設定
    Sheets("sheet2").Range("a1").Value = "赤"
    
    ' sheet2のB2のセルに値を設定
    Sheets("sheet2").Cells(2, 2).Value = "黄"
    
    ' sheet2のC3のセルに値を設定
    Sheets("sheet2").Cells(3, "C").Value = "青"
    
End Sub

4行目は、「sheet2」を指定しRangeを使用しています。
7,10行目も、「sheet2」を指定しCellsを使用しています。

関連の記事

VBA For文の使い方(処理を繰り返す)
VBA Do Loop文の使い方(処理を繰り返す)
Excel VBA セルの値をテキストに出力するサンプル

△上に戻る