|

|
|
 |
5.4 セルへ文字列、数値、数式を書込む2 |
 |
|
|
|
|
|
この例では、書込むセルが可変の場合を説明します。なお、セルへ文字列や数値、数式などを書き込むときの方法(RangeまたはCellsのValueプロパティを操作)は同じです。
ちなみに、Excel97以降ではRangeまたはCellsの標準プロパティ(省略したときのプロパティ)がValueプロパティになっているので省略しても平気ですが、Happy! Happy! Islandでは付けるようにしています。
|
|
|
|
|
|
|
|
|
|
まず最初に縦方向に書込んでいく場合を、「A1〜A10までの連続したセルに何らかの値を入れる」という例を基にして説明します。
(ワークブック・ワークシート共に、1つ目とします)
以下の例では、セルA1〜A10へそれぞれ1〜10の数値を入れています。Rangeの所で"A" & iとしているのがポイントで、Rangeに指定するセル名のうち行の部分を変数 i の値で指定しています。
Sub prcCellA1toA10_1()
Dim i As Long
For i = 1 To 10
'行の部分はiの値を指定
Range("A" & i) = i
Next
End Sub
|
※このエクセルマクロはワークシート内へ記述するマクロです
ちなみに、Cellsを使った場合と、RangeとCellsの組み合わせだと次のようになります。こちらの例では、CellsはA1〜A10へ、RangeとCellsの組み合わせはB1〜B10へセットしています。
Sub prcCellA1toA10_2()
Dim i As Long
For i = 1 To 10
'Cellsは「行, 列」で指定。列をiで指定し可変にする
'列1はA列
Cells(i, 1) = i
'RangeとCellsの組み合わせ
'列2はB列
Range(Cells(i, 2), Cells(i, 2)) = i * 10
Next
End Sub
|
※このエクセルマクロはワークシート内へ記述するマクロです
もう一つの方法も書いておきます。オブジェクトを使ってループする方法です。次の例では、2番目の例と全く同じ事をしています。繰り返しの基準はRangeによる範囲指定で行い、B列のセルはOffsetプロパティを使って指定してます。Offsetプロパティというのは、元の範囲から指定した分だけずらした同じ大きさの範囲を参照せよというプロパティです。
Sub prcCellA1toA10_3()
Dim rngCell As Range
Dim i As Long
i = 0
For Each rngCell In Range("A1:A10")
i = i + 1
'A列のセル
rngCell.Value = i
'B列はOffsetを使いセット
rngCell.Offset(0, 1).Value = i * 10
Next
End Sub
|
※このエクセルマクロはワークシート内へ記述するマクロです
|
|
|
|
|
|
|
|
|
|
次に横方向(列方向)に書込んでいく場合です。「A1〜J1までの連続したセルに何らかの値を入れる」という例を基にして説明します。
横方向(列方向)に書込む場合、セル名(A1やC1など)で指定するとムダにややこしくなるので、CellsやRangeとCellsの組み合わせが適しています。以下の例では、A1〜J1の連続したセルに値を入れています。
Sub prcCellA1toJ1_1()
Dim i As Long
For i = 1 To 10
'Cellsは「行, 列」で指定。列をiで指定し可変にする
Cells(1, i) = i
Next
End Sub
|
※このエクセルマクロはワークシート内へ記述するマクロです
RangeとCellsの組み合わせの場合は、次の通りです。
Sub prcCellA1toJ1_2()
Dim i As Long
For i = 1 To 10
'RangeとCellsの組み合わせ
Range(Cells(1, i), Cells(1, i)) = i
Next
End Sub
|
※このエクセルマクロはワークシート内へ記述するマクロです
オブジェクトを使ってループする例も書いておきます。繰り返しの基準はRangeによる範囲指定で行い、2行目のセルはOffsetプロパティを使って指定してます。
Sub prcCellA1toJ1_3()
Dim rngCell As Range
Dim i As Long
i = 0
For Each rngCell In Range("A1:J1")
i = i + 1
'1行目のセル
rngCell.Value = i
'2行目はOffsetを使いセット
rngCell.Offset(1, 0).Value = i * 10
Next
End Sub
|
※このエクセルマクロはワークシート内へ記述するマクロです
|
|
|
|
|