- ベストアンサー
VBAでオートフィルの動き
VABでセルに計算式をLoopで設定する処理を作成したのですが、6000行ほどあるのでそれなりに時間が掛かります。 例えば、セルに計算式を1つ選択して、セルの右下隅(フィルハンドル)にマウスポインタを合わせ黒十字に変わったところでダブルクリックを行うと、一気に値や数式が設定されるかと思い ますが、VBAでこのよな処理は可能なのでしょうか? 実際、計算式を1行入れて、オートフィルを実行するとLoopで実行するより遥かに早く処理が終了します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じです。 Range("A1:A6000").Formula = "=数式"
その他の回答 (1)
- OrangeCup150
- ベストアンサー率62% (109/174)
' 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
お礼
丁寧な解説、ありがとうございました。
お礼
知りたかったそのものでした。有難うございました。