質問者
エクセルでマクロの入ったセルをコピー、ペーストに時間がかかる

質問
-
コミニュティで質問して設定関係いろいろ試したのですが
Excel2010、2013でマクロを含むセルのコピーが時間がかかる
富士通さんのPCに変えて Win7にoffice2013を入れたのですが マクロ組んだセルのコピー、ペーストをマウスの右クリックで行うと2つのセルを1回コピーするのに2分弱かかります ただし ショートカット(Ctrl+C、Ctrl+V)を使うとすぐに貼り付け終了できます これはoffice側の問題?なのでしょうか
ただ 自作PCでWin7にoffice2013を入れたPCで試したら マウスの右クリックで普通に動いているのですが ほかの既製品のPCないので試せない状態です
マクロが原因ではないかと こちらで見てもらってはということになったのですが
一応 マクロ貼り付けて見ます
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2004/5/21 ユーザー名 : 嘉門
'
'
Dim A(5, 9, 14)
For I = 1 To 5
For J = 1 To 9
For K = 1 To 14
A(I, J, K) = Cells(10 * (I - 1) + 312 + J, K + 4)
Next K
Next J
Next I
Range("E3:R11").Select
Selection.ClearContents
Range("E13:R21").Select
Selection.ClearContents
Range("E23:R31").Select
Selection.ClearContents
Range("E33:R41").Select
Selection.ClearContents
Range("E43:R51").Select
Selection.ClearContents
Range("E53:R61").Select
Selection.ClearContents
Range("E63:R71").Select
Selection.ClearContents
Range("E73:R81").Select
Selection.ClearContents
Range("E83:R91").Select
Selection.ClearContents
Range("E93:R101").Select
Selection.ClearContents
Range("E103:R111").Select
Selection.ClearContents
Range("E113:R121").Select
Selection.ClearContents
Range("E123:R131").Select
Selection.ClearContents
Range("E133:R141").Select
Selection.ClearContents
Range("E143:R151").Select
Selection.ClearContents
Range("E153:R161").Select
Selection.ClearContents
Range("E163:R171").Select
Selection.ClearContents
Range("E173:R181").Select
Selection.ClearContents
Range("E183:R191").Select
Selection.ClearContents
Range("E193:R201").Select
Selection.ClearContents
Range("E203:R211").Select
Selection.ClearContents
Range("E213:R221").Select
Selection.ClearContents
Range("E223:R231").Select
Selection.ClearContents
Range("E233:R241").Select
Selection.ClearContents
Range("E243:R251").Select
Selection.ClearContents
Range("E253:R261").Select
Selection.ClearContents
Range("E263:R271").Select
Selection.ClearContents
Range("E273:R281").Select
Selection.ClearContents
Range("E283:R291").Select
Selection.ClearContents
Range("E293:R301").Select
Selection.ClearContents
Range("E303:R311").Select
Selection.ClearContents
Range("E313:R321").Select
Selection.ClearContents
Range("E323:R331").Select
Selection.ClearContents
Range("E333:R341").Select
Selection.ClearContents
Range("E343:R351").Select
Selection.ClearContents
Range("E353:R361").Select
Selection.ClearContents
For I = 1 To 5
For J = 1 To 9
For K = 1 To 14
Cells(10 * (I - 1) + 2 + J, K + 4) = A(I, J, K)
Next K
Next J
Next I
Range("A1").Select
End Sub以上なのですが 宜しくお願いします
すべての返信
-
何か月か前にどこかのサイトで同じ質問をしていくつかのアドバイスもありましたが
アドバイスを無視して同じことを書いていますね。 そのコード自体は感心できない部分があるとしても
とても性能が低いPCでもたかだか1秒ほどで終わります。
少し書き換えればほぼ瞬時に終わるでしょう。
そうならないということは、
以前にも書いたと思いますが
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
あたりに何か書かれている可能性が高いです。
Range("E3:R11").ClearContents
のようにすべて書き換えてしまえばそちらが呼び出されることはなくなります。
-
今回の原因とは直接関係なさそうですが、多くのセルを操作する場合は、一時的に自動再計算と画面の描写を止めるのが基本です。
(参考)
2.6.3 画面描画と数式再計算を止める
https://sites.google.com/site/compositiosystemae/home/vbaworld/primitive/exp1/stopredrow★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
-
おせわになってます DreamyCatさん
すいませんが アドバイス無視して同じこと書いてといわれても
自分 マクロのことわからないから わかるひとに 聞いてみます と 書きましたし
もうひとつのサイトで相談にのってもらっている方に マクロの中身 このサイトで見て もらったらと 助言もらったので
質問かいたのですが 素人は質問書くなということなんですね
- 編集済み narisu19900403 2014年12月24日 2:58