教えて!ExcelVBA!

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

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

       f:id:m_kbou:20200420133742p:plain

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

 

【目次】

 

例題

例題は、以下の転記前状態(Book1.xlsxのSheet1のA2セル~A6セルに登録されているデータ)を、転記後状態(Book2.xlsxのSheet1のA2セル~A6セルに転記)にするプログラミング方法です。

[転記前]:

f:id:m_kbou:20200107144716p:plain

[転記後]:

f:id:m_kbou:20200107144727p:plain

 

プログラミング

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Sub サンプル()
   
    Dim 行 As Double
   
    行 = 2
   
    Do Until Trim(Sheets("Sheet1").Range("A" & 行)) = ""
        Workbooks("Book2.xlsx").Sheets("Sheet1").Range("A" & 行) = Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A" & 行)
        行 = 行 + 1
    Loop
   
End Sub

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

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

次に変数:行には初期値として2をセットします。

最後にDo~Loop文を使用して転記を行いながら変数:行に数字を1づつ足してループさせます。

ループはBook1.xlsxブックのSheet1シートのA列のセルにデータが入力されていない場合に抜ける事になります。また、このループによりBook1.xlsxブックのSheet1シートのA列2行目~6行目のデータをBook2.xlsxブックのSheet1シートのA列2行目~6行目に転記します。

転記する記述方法は、「=」(イコール)の右側に転記前のセルを指定し、左側に転記先のセルを指定します。

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

「最初のループでは変数:行に2がセットされているので、Book1.xlsxブックのSheet1シートのA2セルにデータが入力されているかを判定します。Book1.xlsxブックのSheet1シートのA2セルにはデータが入力されているため、Book1.xlsxブックのSheet1シートのA2セルのデータをBook2.xlsxブックのSheet1シートのA2セルに転記し、その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は2+1=3となります。

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

次のループでは変数:行に3がセットされているので、Book1.xlsxブックのSheet1シートのA3セルにデータが入力されているかを判定します。Book1.xlsxブックのSheet1シートのA3セルにはデータが入力されているため、Book1.xlsxブックのSheet1シートのA3セルのデータをBook2.xlsxブックのSheet1シートのA3セルに転記し、その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は3+1=4となります。

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

更に次のループでは変数:行に4がセットされているので、Book1.xlsxブックのSheet1シートのA4セルにデータが入力されているかを判定します。Book1.xlsxブックのSheet1シートのA4セルにはデータが入力されているため、Book1.xlsxブックのSheet1シートのA4セルのデータをBook2.xlsxブックのSheet2シートのA4セルに転記し、その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は4+1=5となります。

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

更に次のループでは変数:行に5がセットされているので、Book1.xlsxブックのSheet1シートのA5セルにデータが入力されているかを判定します。Book1.xlsxブックのSheet1シートのA5セルにはデータが入力されているため、Book1.xlsxブックのSheet1シートのA5セルのデータをBook2.xlsxブックのSheet1シートのA5セルに転記し、その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は5+1=6となります。

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

更に次のループでは変数:行に6がセットされているので、Book1.xlsxブックのSheet1シートのA6セルにデータが入力されているかを判定します。Book1.xlsxブックのSheet1シートのA6セルにはデータが入力されているため、Book1.xlsxブックのSheet1シートのA6セルのデータをBook2.xlsxブックのSheet1シートのA6セルに転記し、その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は6+1=7となります。

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

更に次のループでは変数:行に7がセットされているので、Book1.xlsxブックのSheet1シートのA7セルにデータが入力されているかを判定します。Book1.xlsxブックのSheet1シートのA7セルにはデータが入力されていないため、ループを抜ける事になります。」

との意味になります。

 

ダウンロード

上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。

1drv.ms

 

関連プログラム

www.osiete-excelvba.work

www.osiete-excelvba.work