セルにあらかじめ変数へ格納しているデータを入力する方法をご説明します。
単一のセルへの入力方法や、複数セルに一括で入力する方法も併せてご説明します。
その他のセルの操作方法については下記の記事をご覧ください。
単一のセルへ変数の値を入力
記述方法
変数に入れた内容の入力方法です。
変数を宣言して、変数に文字列や数字を格納してからセルへデータを入力します。
以下Sampleは2つの変数に文字列と数字を格納してからA1とB1に入力するコードです。
サンプルコード
Range
Sub Sample1()
Dim myStr As String
Dim myInt As Long
myStr = "あいうえお"
myInt = 12345
Range("A1").Value = myStr
Range("B1").Value = myInt
End Sub
Cells
Sub Sample2()
Dim myStr As String
Dim myInt As Long
myStr = "あいうえお"
myInt = 12345
Cells(1, 1).Value = myStr
Cells(1, 2).Value = myInt
End Sub
結果
複数セルへ変数の値を一括で入力
記述方法
複数のセルへ一括で入力する方法です。
複数のセルへ一括と言っても、内容が多岐にわたります。
1つ変数に1つの値を連続した複数のセルへ一括入力、離れたセルへ一括入力。
複数の値を持つ変数をセルへ一括入力する方法がなどがあります。
方法によって宣言も含めた記述が変わってきます。
連続するセルへ1つの値の変数を一括で入力する
まずは1つの値のみ格納している変数を連続したセルへ入力方法です。
Rangeであれば「Range(“A1:A5”).Value = 変数」のように範囲を指定して、セルへ反映します。
Cellsの場合は「Range(Cells(1, 1), Cells(5, 1)).Value = 変数」と行、列とCellsでアドレスを指定します。
Range
Sub Sample3()
Dim myStr As String
Dim myInt As Long
myStr = "あいうえお"
myInt = 12345
Range("A1:A5").Value = myStr
Range("B1:B5").Value = myInt
End Sub
Cells
Sub Sample4()
Dim myStr As String
Dim myInt As Long
myStr = "あいうえお"
myInt = 12345
Range(Cells(1, 1), Cells(5, 1)).Value = myStr
Range(Cells(1, 2), Cells(5, 2)).Value = myInt
End Sub
結果
変数に格納していた同じ値を複数のセルへ反映できました。
離れたセルへ1つの値の変数を一括で入力する
離れたセルは連続したセルと記述が異なります。
Rangeの場合は指定するセルを、それぞれカンマで区切ります。
Cellsの場合は「Unionメソッド」を使用します。
離れたセルの選択方法については、「複数のセルを一括で選択、指定する方法」を参照ください。
Range
Sub Sample5()
Dim myStr As String
Dim myInt As Long
myStr = "あいうえお"
myInt = 12345
Range("A1,B3,C5").Value = myStr
Range("A3,B5,C7").Value = myInt
End Sub
Cells
Sub Sample6()
Dim myStr As String
Dim myInt As Long
myStr = "あいうえお"
myInt = 12345
Union(Cells(1, 1), Cells(3, 2), Cells(5, 3)).Value = myStr
Union(Cells(3, 1), Cells(5, 2), Cells(7, 3)).Value = myInt
End Sub
結果
複数の値を持つ変数を一括で入力する
複数の値を持つ変数使って一括で入力する方法です。
基本的に変数には1つの値を格納しますが、複数の値を格納することもできます。
より応用的に複数の値を扱う場合は、「配列の使い方(基礎編)」「配列の使い方(応用編)」を参照ください。
変数の宣言時に「Variant」を使用します。
変数へ一括で範囲指定して格納して、反映したい範囲を指定して出力します。
あらかじめA1~A5に入力しているデータを格納して、C1~C5へ一括で入力します。
Sub Sample7()
Dim myArr As Variant
myArr = Range(Cells(1, 1), Cells(5, 1)).Value
Range(Cells(1, 3), Cells(5, 3)).Value = myArr
End Sub