教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA プログラミング】(転記8)データを別ブックに転記する方法を教えて!(For~Next文転記)

f:id:m_kbou:20200420133906p:plain

データを別ブックにFor~Next文を使用して転記する方法について説明します。今回は転記前ブック及び転記先ブックの両方が開いている事を前提に説明します。

 

 

例題

例題は、<実行>ボタンをクリックすると、転記前状態(Book1.xlsmのSheet1のA2セル~A6セルに登録されているデータ)を、転記後状態(Book2.xlsmのSheet1のA2セル~A6セルに転記)にするプログラミング方法です。

[転記前]:

f:id:m_kbou:20210220201602p:plain

[転記後]:

f:id:m_kbou:20210220201617p:plain

 

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

Sub サンプル()

  Dim 行 As Double

  For 行 = 2 To 6
    Workbooks("Book2.xlsm").Sheets("Sheet1").Range("A" & 行) = Workbooks("Book1.xlsm").Sheets("Sheet1").Range("A" & 行)
  Next

End Sub

最初に変数:行を指定します。

次にFor~Next文を使用して変数:行に2~6までの数値を順次セットしながらループさせます。

このループによりBook1.xlsmブックのSheet1シートのA列2行目~6行目のデータをSheet1シートのA列2行目~6行目に転記する事になります。

転記の記述方法は、「=」(イコール)の右側に転記前のブック名及びシート名及びセルを指定し、左側に転記先のブック名及びシート名及びセルを指定します。

ブック名の記述方法は、Workbooks("[ブック名]")とし、シート名の記述方法は、Sheets("[シート名]")とし、セルの記述方法はRange("[セル]")となります。ブック名及びシート名とセルとの間は「.」(ピリオド)で繋げます。

ループ内の記述内容を説明すると、

---------------------------------

最初に変数:行に2がセットされている場合、Book1.xlsmブックのSheet1シートのA2セルのデータをBook2.xlsmブックのSheet1シートのA2セルに転記します。

---------------------------------

次に変数:行に3がセットされている場合、Book1.xlsmブックのSheet1シートのA3セルのデータをBook2.xlsmブックのSheet1シートのA3セルに転記します。

---------------------------------

次に変数:行に4がセットされている場合、Book1.xlsmブックのSheet1シートのA4セルのデータをBook2.xlsmブックのSheet1シートのA4セルに転記します。

---------------------------------

次に変数:行に5がセットされている場合、Book1.xlsmブックのSheet1シートのA5セルのデータをBook2.xlsmブックのSheet1シートのA5セルに転記します。

---------------------------------

次に変数:行に6がセットされている場合、Book1.xlsmブックのSheet1シートのA6セルのデータをBook2.xlsmブックのSheet1シートのA6セルに転記する。

---------------------------------

との意味になります。

f:id:m_kbou:20210220203045p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。また、ボタンにプログラムを割り当てるにはこちらを参考にして下さい。

 

ダンロード

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

 

関連プログラム

www.osiete-excelvba.work

www.osiete-excelvba.work