- ベストアンサー
"VBAの繰り返し"についてお尋ねします。VBA初心者です。
"VBAの繰り返し"についてお尋ねします。VBA初心者です。 例えば「A列の最後のセルに何か入れば、その行のB列、C列・・・の一つ上のセルに入っている計算式を繰り返しコピーする」と言うコードを教えていただけたらと思います。A列の最後のセルに何か入ってくれば、その行の一つ上のセルに入っている計算式を繰り返しコピーするというコードです。コード記述の例を教えていただけたらと思います。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
オートフィル機能を用いたサンプルです。 >A列の最後のセルに何か入れば 最後のセルというのを「A1から連続して入力A列の最後」として判定しています。 Sub Main() '書式コピー元の列宣言 Const DEF_COL1 As String = "B" 'コピー元の先頭列をBとする Const DEF_COL2 As String = "D" 'コピー元の最終列をDとする 'このマクロブックのシート1を対照とする Dim l_xlsSheet As Worksheet Set l_xlsSheet = ThisWorkbook.Worksheets("Sheet1") 'シートのA1 Dim l_rng先頭 As Range Set l_rng先頭 = l_xlsSheet.Cells(1) 'A1から連続して入力のある最後を取得 Dim l_rng最後 As Range Set l_rng最後 = l_rng先頭.End(xlDown) '先頭と最後が違う場合 If Not (l_rng先頭 Is l_rng最後) Then Dim l_rng1 As Range '先頭のB~D(実質B1~D1) Set l_rng1 = l_xlsSheet.Range(l_xlsSheet.Range(DEF_COL1 & l_rng先頭.Row), l_xlsSheet.Range(DEF_COL2 & l_rng先頭.Row)) '入力のあるA列のB~D Dim l_rng2 As Range Set l_rng2 = l_xlsSheet.Range(l_xlsSheet.Range(DEF_COL1 & l_rng最後.Row), l_xlsSheet.Range(DEF_COL2 & l_rng最後.Row)) '四角形のエリアを取得 Dim l_rngBox As Range Set l_rngBox = l_xlsSheet.Range(l_rng1, l_rng2) 'オートフィル機能を利用する(元ネタ:B1~D1/出力先:BOXエリア) Call l_rng1.AutoFill(l_rngBox) End If End Sub
お礼
すみません。家の事で色々あったもので、PCを開く事も出来ず、お礼が遅くなりました事、お詫び申し上げます。細かく説明していただいてありがとうございましたm(__)mこのソースでやってみたいと思います。ありがとうございました。取り急ぎお礼を申し上げます。