エクセルでファイルサイズが1Mぐらいの時、マクロを作成しました。その後、だんだんとデータが増えるにつれて、マクロの処理スピードが遅くなってきました。現在のファイルサイズは1.8Mぐらいなのですが、この先情報量が増えると共にマクロの処理スピードは遅くなっていくのでしょうか?
ちなみにマクロが処理するのは12行挿入とその行に番号を打つのと一列のオートフィル(12行)だけなのです。全体のファイルサイズとマクロの処理スピードに関連があるのでしょうか?・・・現実には遅くなって来てますが・・・。知ってる方教えて下さい。
No.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
少しは早くなったでしょうか?
間違ってる場所は、補足していただければ修正します。
超ありがとうございます!!
むちゃくちゃ早いです。一瞬のうちにマクロが終わってしまいました。感謝感激です。間違っている所もありません。問題なく使えました。
誠に誠にありがとうございます。マクロって勉強すべきですね。がんばってみます。しかしこうしてみると、自動記録マクロってやっぱりちょっとダメですね。
どうもありがとうございました。
No.2
- 回答日時:
>いずれ手動で行挿入したほうが早い日が来るのではないかと恐怖です。
手動での挿入のスピードは、遅くないのですか?
計算式が多くなると再計算に時間が掛かったりしますが、
そういうのとは違うのでしょうか?
もしよければ、実際のマクロを補足して頂けませんか。
この回答への補足
>手動での挿入のスピードは、遅くないのですか?
・・・いえいえ、もっと遅いです(笑)。しかし、マクロを作成した時点での動作スピードと現在の動作スピードがあまりにも違うもので・・・。ちょっと誇張しましたが、待ち時間が退屈なもので・・・。
以下にマクロをコピーしてみました。このマクロは
作成時には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
No.1
- 回答日時:
ご質問の場合とは異なりマクロを使っていない場合ですが、ファイルの容量が増えると処理速度が遅くなる感じは受けます。
特にご質問の場合、行の挿入という処理を考えると、データのあるメモリ領域を1つづつづらす処理ではないかと思われるので、ファイルサイズが大きくなるとともに遅くなる可能性がありそうに思えます。挿入する行の位置が原点に近い場合は特に遅くなるのではないでしょうか。
回答ありがとうございます。
> 挿入する行の位置が原点に近い場合は特に遅くなる
> のではないでしょうか。
・・・だんだんと原点から遠くなっております。つまり挿入する行の下には何も無い(に近い)状態です。この調子で行くといずれ手動で行挿入したほうが早い日が来るのではないかと恐怖です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで謎の現象が起きていて困ってます。 エクセルで作ったボタンを押すとマクロが動いて処理をしてくれ 3 2023/06/22 17:28
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて 重複したものがあれば行を削除するとい 1 2023/02/27 18:49
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) Activesheet.Pasteで困っています 1 2023/01/22 07:41
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) マクロの保存先、開いてるすべてのブックの意味 エクセルを開き、表示→マクロ→マクロの表示と順番に開く 3 2022/06/25 17:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
メッセージボックスのOKボタ...
-
2つのマクロでチェックボックス...
-
エクセルのマクロについて教え...
-
Excel2013 VBA マクロ実行中に...
-
エクセルのマクロについて教え...
-
VBA初心者 Ctrl+での操作、ボタ...
-
エクセルで別のセルにあるふり...
-
エクセルのマクロについて教え...
-
Excelマクロを引数付で起動
-
「マクロ」の語源
-
エクセルのマクロについて教え...
-
レポートで空データ時に印刷しない
-
ユーザーフォームを起動しなが...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報