アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルマクロで単純処理を連発させているのですが、途中でフリーズてしまいます。大量処理する場合、フリーズを防ぐ方法はどのようなものがありますでしょうか?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件)

マシンスペックを上げて、無駄のないコードを書いて下さい。



一番大事なのは、フリーズするほど重たい処理が発生しないようにシステムやコードを設計することです。
    • good
    • 0

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

が速いのです。
    • good
    • 1

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
    • good
    • 0

(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
今までの小生の思いこみに過ぎないかもしれません。エクセル処理内部のことも判っていないと言えないことなのですが、その辺不十分で、ご批判を乞いたい。
この質問は先日も出しませんでしたか、見たような気がする。
    • good
    • 0

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は分かりませんので悪しからず。
    • good
    • 0

 その仕事以外のことを、コンピュータにさせないことです。

また、katan_FXさんのようなコンピュータの使い方であれば、CPUはAthlonの64 FX プロセッサがいいでしょうねぇ。

 さて、OSは何でしょう?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A