
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>ところが、『行の高さ』を変更すると劇的に遅く(重く)なるのです!
>Excelの設定は変えていないし、PCもPen4 3GHz メモリ1Gなのでスペック的にも問題ないと思います。
>これって、Excelのバグかなんかでしょうか?
重くなっても時間が経てば復帰するなら不具合とは言えないですね。
Excel内部のデータの記録方法により、部分的な変更で良いか、
データ全体を書き換えないといけなくなるかで、処理の重さは変わってきますから。
ちなみに使用のWindowsとExcelのバージョンは?
Office 2000や2003だとメモリが充分にあってもExcelが扱えるサイズに限度がありますし、
2007では、その制限も大幅に緩和され処理の最適化もされていますが、メモリが多く必要になります。
2007なら2GB以上は必要かも知れません。
No.2
- 回答日時:
大体はNo.1の方が言われている通りで1命令で処理できるマクロを高速化できる余地はあまりありません。
後は気休め程度にしかならないかも知れませんが、画面更新を中止させるとか、そのセルを参照している計算式が多くあるなら再計算を一時中止させるくらいしか
Dim wst As Worksheet
'高速化の為に画面更新を中止させる
Application.ScreenUpdating = False
'ワークシートの再計算を停止する
For Each wst In ActiveWorkbook.Worksheets
wst.EnableCalculation = False
Next wst
Range("A1:G65536").ClearContents
'ワークシートの再計算を再開する
For Each wst In ActiveWorkbook.Worksheets
wst.EnableCalculation = true
Next wst
'高速化の為に画面更新を再開する
Application.ScreenUpdating = true
この回答への補足
yama1718さん --HV--さん ありがとうございます
再計算や画面更新の停止で少しは早くなった?かなっ?て感じです。
色々とTESTしてみたところ、
・計算式、オブジェクトはあまり影響がない(多少はありますが...)
・列幅も影響がない
ところが、『行の高さ』を変更すると劇的に遅く(重く)なるのです! Excelの設定は変えていないし、PCもPen4 3GHz メモリ1Gなのでスペック的にも問題ないと思います。
これって、Excelのバグかなんかでしょうか?
No.1
- 回答日時:
あくまで参考意見ですが、
手作業でその作業をしたときとマクロで対応したときの処理速度はどれくらい違うんでしょうか?
手作業でも同じになるなら、PCスペックの問題な気がします。
あえてやるなら、細かい範囲の繰り返し消去でしょうか。
for i = 1 to 7 ' a->g
range(cells(1,i),cells(65536,i)).ClearContents
next i
行単位でもフリーズするなら、さらに細かくコーディングするしかないかも。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) [入力規則]のリストボックス内の“不揃いの林檎たち” 3 2022/09/15 18:32
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Excel(エクセル) win10でexcel2003は動かないのか 8 2023/07/20 10:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBAを何回も作り直して、容量が増えた
Excel(エクセル)
-
Excel VBA データ削除の高速化
その他(Microsoft Office)
-
-
4
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
8
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
9
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
10
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
11
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
12
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
15
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
16
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
17
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
18
エクセルでマクロにてセル色と文字を他シートのセルへコピーしたい
その他(コンピューター・テクノロジー)
-
19
エクセルVBA ブックを閉じる前に確認メッセージを表示したい
Excel(エクセル)
-
20
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++2010 GDIオブジェクトの解...
-
ppm raw形式の構造
-
DoEvents関数って何?
-
win10で、正確な待ち時間の作り方
-
「単体テスト」に関する深刻な...
-
ゲームプログラミングの乱数で...
-
Excelでのセル内容の高速消去方法
-
絶対パスの取得について
-
実行時のCPU使用率を増やしたい
-
Excel VBA での処理時間計測結...
-
ExcelVBA処理経過をリアルタイ...
-
ナップザック問題?をエクセル...
-
Macターミナルで実行中のプログ...
-
テキストファイルを読み込んで...
-
winsockを使った通信方法
-
家電製品の電力周波数を変える機械
-
PerlScriptでMSAgentをプログラ...
-
アセンブリ言語の問題
-
TCP/IP通信時のサーバーからの受信
-
異なる言語間でのソケット通信...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
win10で、正確な待ち時間の作り方
-
Excelでのセル内容の高速消去方法
-
Excel VBAにて、2GB超の点群デ...
-
小数点を含む数値かどうか判断...
-
プログラム上のCPU稼働率低減に...
-
SQLの速度をあげるには・・・
-
DoEvents関数って何?
-
基本情報技術者試験詳しい方へ...
-
実行時のCPU使用率を増やしたい
-
VC++2010 GDIオブジェクトの解...
-
C言語 時刻差分の算出方法
-
ナップザック問題?をエクセル...
-
Excel(VBA)でSetTimer関数を使...
-
エクセルVBA 時間抜けの取得
-
VBでの簡易電卓の作成(減算方...
-
ノットイコールを教えて下さい
-
If Not c Is Nothing Then ~延...
-
Excel VBA データ削除の高速化
-
絶対パスの取得について
-
テキスト処理の速度の速い言語
おすすめ情報