• ベストアンサー

VBAでオートフィルの動き

VABでセルに計算式をLoopで設定する処理を作成したのですが、6000行ほどあるのでそれなりに時間が掛かります。 例えば、セルに計算式を1つ選択して、セルの右下隅(フィルハンドル)にマウスポインタを合わせ黒十字に変わったところでダブルクリックを行うと、一気に値や数式が設定されるかと思い ますが、VBAでこのよな処理は可能なのでしょうか? 実際、計算式を1行入れて、オートフィルを実行するとLoopで実行するより遥かに早く処理が終了します。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

こんな感じです。 Range("A1:A6000").Formula = "=数式"

fufufuman
質問者

お礼

知りたかったそのものでした。有難うございました。

その他の回答 (1)

回答No.2

' Sheet1!A2 と Sheet1!B2 には数値が入っているとします。 ' これが6000行繰り返しあるとします。 ' このとき Sheet1!C2 に数式を入力し AutoFill するマクロ Sub 例1() ' 画面更新を抑制 Application.ScreenUpdating = False ' 数式を設定 Sheet1.Range("c2").Formula = "=A2*B2" ' AutoFill を実行 Call Sheet1.Range("c2").AutoFill(Sheet1.Range("c2:c6000")) ' 画面更新を再開 Application.ScreenUpdating = True End Sub ' 複数列の AutoFill Sub 例2() Application.ScreenUpdating = False ' 数式を設定 Sheet1.Range("c2").Formula = "=A2*B2" Sheet1.Range("d2").Formula = "=C2*2" ' AutoFill を実行 Call Sheet1.Range("c2:d2").AutoFill(Range("C2", Cells(Sheet1.UsedRange.Rows.Count, 4))) ' Sheet1.Range(基準となるセル範囲).AutoFill(Range(左上のセル番地, 右下のセル番地)) Application.ScreenUpdating = True End Sub

fufufuman
質問者

お礼

丁寧な解説、ありがとうございました。

関連するQ&A