複数のセルの値を別の複数のセルに繰り返し転記する

エクセルVBAセルの操作 セルの操作
スポンサーリンク

エクセルからエクセルへの差し込み印刷でも使っているのですが、住所録からお礼状などを作成する時に、名前・郵便番号・住所などを顧客リスト全員分を順番に印刷する時に繰り返し処理として使っています。

例えばリスト1番目の名前・郵便番号・住所をお礼状の指定した場所に複写して、印刷をします。

次に自動的にリスト2番目の名前・郵便番号・住所を再びお礼状の指定した場所に複写して印刷と、次から次へと印刷出来たら便利ですよね。

スポンサーリンク

セルA1の値はセルAA101へ転記を50回繰り返し処理する

繰り返し処理を使わずに1つずつ書き続ける

簡単に50個と書きましたが、セルA1に「佐藤」セルA2に「鈴木」セルA3に「山田」と名前があり、単純にセルAA101,AA102,AA103と書き写す(ある意味コピー)するだけならば、以下のようにVBAコードを書けばいいです。

ここでは、ユーザーフォームに配置したコマンドボタン1にVBAコードを書きます。

セルの値を別のセルに書き写す

Private Sub CommandButton1_Click()
Range(“AA101”).Value = Range(“A1”).Value
Range(“AA102”).Value = Range(“A2”).Value
Range(“AA103”).Value = Range(“A3”).Value
End Sub

VBA解説
  1. コマンドボタン1を押したら
  2. セルAA101にはセルA1の値を記載する
  3. セルAA102にはセルA2の値を記載する
  4. セルAA103にはセルA3の値を記載する
  5. マクロ記録終了

このように3つだけならば簡単にVBAコードを書くことができますが、50個となるとこのままVBAコードを書き足すのはとても面倒で、間違えの原因になります。

繰り返し処理をするFor~Nextを使う

同じ処理を繰り返し行うならば、エクセルVBAで使うのがFor~Nextで、「指定した回数だけ処理を繰り返す」というものです。

ここでは、ユーザーフォームに配置したコマンドボタンに、セルA1の値をセルAA1へ書き写しを始めて最終セルA50の値をセルAA150まで順々に書き写すように、栗化して処理するVBAコードを書いています。

繰り返し処理

Private Sub CommandButton1_Click()
Dim i As Long
For i = 101 To 150
Cells(i, “A”).Value = Cells(i -100, “A”).Value
Next i
End Sub

VBA解説
  1. コマンドボタン1を押されたら
  2. 数字が変わる部分を変数「i」を宣言
  3. 変わる数字が101~150
  4. セル(「変数i」、A列)の値は変数「i」-100で1行目~50行目のA列の値とする
  5. この作業を繰り返す
  6. マクロ終了

これで50個順番に繰り返して書き写してくれます。

とりっぷぼうる
とりっぷぼうる

セルの値を別のセルに繰り返し書き写す事って、通常はほぼ使いませんでしたが、エクセル住所録のデータを自動的に差し込み印刷に使おうとする時に、初めて活用できましたので皆様もぜひ活用してくださいね。