プロが教えるわが家の防犯対策術!

エクセルでファイルサイズが1Mぐらいの時、マクロを作成しました。その後、だんだんとデータが増えるにつれて、マクロの処理スピードが遅くなってきました。現在のファイルサイズは1.8Mぐらいなのですが、この先情報量が増えると共にマクロの処理スピードは遅くなっていくのでしょうか?

ちなみにマクロが処理するのは12行挿入とその行に番号を打つのと一列のオートフィル(12行)だけなのです。全体のファイルサイズとマクロの処理スピードに関連があるのでしょうか?・・・現実には遅くなって来てますが・・・。知ってる方教えて下さい。

A 回答 (3件)

補足どうもです。



補足のプログラムを私なりに修正してみました。
相対参照が多くて、プログラムを読みきれているか不安ですが、
バックアップをとってから試してみてください。

Sub test()
  Dim wRow As Long
  Dim i As Integer
  Dim tbl(1 To 12, 1 To 1) As Integer
  wRow = Range("A65536").End(xlUp).Row
  '12行挿入
  Rows(CStr(wRow) & ":" & CStr(wRow + 11)).Insert
  Range(Cells(wRow + 1, "B"), Cells(wRow + 11, "B")).FormulaR1C1 = "=R[-1]C"
  For i = 1 To 12
    tbl(i, 1) = i
  Next i
  Range(Cells(wRow, "C"), Cells(wRow + 11, "C")).Value = tbl
  Cells(wRow + 12, "F").AutoFill Range(Cells(wRow, "F"), Cells(wRow + 12, "F"))
  ActiveWindow.SmallScroll Down:=12
  Cells(wRow, 1).Select
End Sub

少しは早くなったでしょうか?
間違ってる場所は、補足していただければ修正します。
    • good
    • 0
この回答へのお礼

超ありがとうございます!!
むちゃくちゃ早いです。一瞬のうちにマクロが終わってしまいました。感謝感激です。間違っている所もありません。問題なく使えました。

誠に誠にありがとうございます。マクロって勉強すべきですね。がんばってみます。しかしこうしてみると、自動記録マクロってやっぱりちょっとダメですね。

どうもありがとうございました。

お礼日時:2003/09/27 03:34

>いずれ手動で行挿入したほうが早い日が来るのではないかと恐怖です。



手動での挿入のスピードは、遅くないのですか?

計算式が多くなると再計算に時間が掛かったりしますが、
そういうのとは違うのでしょうか?

もしよければ、実際のマクロを補足して頂けませんか。

この回答への補足

>手動での挿入のスピードは、遅くないのですか?
・・・いえいえ、もっと遅いです(笑)。しかし、マクロを作成した時点での動作スピードと現在の動作スピードがあまりにも違うもので・・・。ちょっと誇張しましたが、待ち時間が退屈なもので・・・。

以下にマクロをコピーしてみました。このマクロは
作成時には1秒ぐらいで完了してたのですが、今はたっぷり5秒かかります。

どんなものなんでしょうか?

Sub Insert12()
'
' Insert12 Macro
' マクロ記録日 : 2003/9/3
'
Range("Z1").Select
Selection.End(xlDown).Select
Selection.End(xlToLeft).Select
Selection.End(xlUp).Select
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
ActiveWindow.SmallScroll Down:=3
ActiveCell.Offset(1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=R[-1]C"
ActiveCell.Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A11"), Type:= _
xlFillDefault
ActiveCell.Range("A1:A11").Select
ActiveCell.Offset(-1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "2"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "3"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "4"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "5"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "6"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "7"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "8"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "9"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "10"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "11"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "12"
ActiveCell.Offset(-11, -2).Range("A1").Select
ActiveWindow.SmallScroll Down:=6
ActiveCell.Offset(12, 5).Range("A1").Select
Selection.AutoFill Destination:=ActiveCell.Offset(-12, 0).Range("A1:A13"), _
Type:=xlFillDefault
ActiveWindow.SmallScroll Down:=-3
ActiveCell.Offset(-12, -5).Range("A1").Select
End Sub

補足日時:2003/09/24 00:04
    • good
    • 0

ご質問の場合とは異なりマクロを使っていない場合ですが、ファイルの容量が増えると処理速度が遅くなる感じは受けます。


特にご質問の場合、行の挿入という処理を考えると、データのあるメモリ領域を1つづつづらす処理ではないかと思われるので、ファイルサイズが大きくなるとともに遅くなる可能性がありそうに思えます。挿入する行の位置が原点に近い場合は特に遅くなるのではないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 挿入する行の位置が原点に近い場合は特に遅くなる
> のではないでしょうか。

・・・だんだんと原点から遠くなっております。つまり挿入する行の下には何も無い(に近い)状態です。この調子で行くといずれ手動で行挿入したほうが早い日が来るのではないかと恐怖です。

お礼日時:2003/09/23 00:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!