• ベストアンサー

"VBAの繰り返し"についてお尋ねします。VBA初心者です。

"VBAの繰り返し"についてお尋ねします。VBA初心者です。 例えば「A列の最後のセルに何か入れば、その行のB列、C列・・・の一つ上のセルに入っている計算式を繰り返しコピーする」と言うコードを教えていただけたらと思います。A列の最後のセルに何か入ってくれば、その行の一つ上のセルに入っている計算式を繰り返しコピーするというコードです。コード記述の例を教えていただけたらと思います。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

huaban
質問者

お礼

すみません。家の事で色々あったもので、PCを開く事も出来ず、お礼が遅くなりました事、お詫び申し上げます。細かく説明していただいてありがとうございましたm(__)mこのソースでやってみたいと思います。ありがとうございました。取り急ぎお礼を申し上げます。

関連するQ&A