
エクセルマクロで単純処理を連発させているのですが、途中でフリーズてしまいます。大量処理する場合、フリーズを防ぐ方法はどのようなものがありますでしょうか?VBAに埋め込むとよいコードなどあれば教えてください。
コードのひとかたまりは下記のようなものです。
これをシートを替えて100連発ほどさせます。
Range("A1:Z1").Select...複雑な計算式がはいっています
Selection.Copy
Range("A1:K10000").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
NO.4です
途中でキーボードが壊れて不親切な書き込みになって
申し訳ございません
表記のVBAですと画面がちらつきますよね?
描画に時間がかかってしまうんです。
そこでマクロ開始時に最小化
完了時に最大化すると必ず早くなります。
それとマクロの記録で作成したものは
やはり効率が悪いんですね。
例えば
Range("A1:Z1").Select
Selection.Copy
や
Range("A1").Select
ActiveCell.FormulaR1C1=XXXXX
なんて記述されるものは
Range("A1:Z1").Copy
Range("A1").VALUE=XXXXX
と置き換えた方が速いのです。
また1つのセルの値を使いまわす時は
Range("B1").VALUE=Range("A1").VALUE
Range("B2").VALUE=Range("A1").VALUE
Range("B3").VALUE=Range("A1").VALUE
:
よりも
DIM myString AS STRING
myString=Range("A1").VALUE
Range("B1").VALUE=myString
Range("B2").VALUE=myString
Range("B3").VALUE=myString
:
が速いのです。
No.4
- 回答日時:
Application.WindowState = xlMinimized
Range("A1:Z1").Copy
Range("A1:K10000").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
100連発後
Application.WindowState = xlNormal
No.3
- 回答日時:
(1)エクセルが内部で1セルコピーするごとに、全セルの再計算をさせないことではないでしょうか。
多分エクセルは1セル値が変わると、他の全セルに影響がないかチェックして、影響がある部分は再計算するようですので。最後に一遍にやる方が能率が良いような気がするApplication.Calculation = xlManual
(2)VBAも(A)COPY方式と(B)値代入方式があると思う。
書式以外の値や式なら、代入方式で置換え可能で、その方が速いのでは。式の表現をVBA向けにしないと(変えないと)いけないが。
=A1+B1を
For i = 2 To 100
Cells(i, "C") = Cells(i, "A") + Cells(i, "B")
Next i
(3)1行ずつのコピーにする。
For i = 2 To 100
Cells(i - 1, "C").Copy
Cells(i, "C").PasteSpecial
Next i
今までの小生の思いこみに過ぎないかもしれません。エクセル処理内部のことも判っていないと言えないことなのですが、その辺不十分で、ご批判を乞いたい。
この質問は先日も出しませんでしたか、見たような気がする。
No.2
- 回答日時:
OS9.2.2以下の環境でしたらExcellに対する「割り当て
メモリ」を増やして見る。
OS-X環境でしたら、体験的にOffice.v.Xはどうも今一でしたから、Office2004にしてみる。
OS自体10.1以下は何か不安定でしたから、10.2(最新のOSは10.3.6で、来春10.4が出ますが)以上が安定しますよ。
根本的にはPowerMacG5がよいと思いますが。(私自身はG4-800で、最近ストレスを感じます)
ショップのデモを見ただけですが、CPUをG4からG5にすると64bit処理の影響か、かなり速くなってました。
一応Macという事で書きましたが、他のOSは分かりませんので悪しからず。
No.1
- 回答日時:
その仕事以外のことを、コンピュータにさせないことです。
また、katan_FXさんのようなコンピュータの使い方であれば、CPUはAthlonの64 FX プロセッサがいいでしょうねぇ。さて、OSは何でしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
値が入っているときだけ計算結...
-
excelでsin二乗のやり方を教え...
-
Excel 数値の前の「 ' 」を一括...
-
2つの数値のうち、数値が小さい...
-
EXCELで条件付き書式で空白セル...
-
【Excelで「正弦波」のグラフを...
-
リンク先のファイルを開かなく...
-
VLOOKUP関数を使用時、検索する...
-
検便についてです。 便は取れた...
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
ある範囲のセルから任意の値を...
-
ワードのページ番号をもっと下...
-
WORDで複数語句を検索するには
-
MIN関数で空白セルを無視したい...
-
彼女のことが好きすぎて彼女の...
-
Excel 0目標に対して数字があ...
-
精液の落とし方を教えてください
-
病院側から早く来てくださいと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報