Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3056 / 13646 ツリー ←次へ | 前へ→

【64546】画面更新の停止 Yoshio.E 10/2/23(火) 0:02 質問[未読]
【64547】Re:画面更新の停止 Abyss 10/2/23(火) 1:29 発言[未読]
【64560】Re:画面更新の停止 Yoshio.E 10/2/23(火) 20:58 質問[未読]
【64563】Re:画面更新の停止 Abyss 10/2/23(火) 22:04 発言[未読]
【64565】Re:画面更新の停止 Yoshio.E 10/2/23(火) 23:39 お礼[未読]

【64546】画面更新の停止
質問  Yoshio.E  - 10/2/23(火) 0:02 -

引用なし
パスワード
   こんばんは。お世話になります。

Sheet上に20個ほどグラフがあり、各グラフの範囲に範囲名を設定し
Shift+編集→図のコピーで各グラフを図として別シートにコピーする
マクロを作成しています。
グラフ1つの要素が20,000行×4列と多い為、1つのグラフをコピー
する度に、パラパラ漫画のごとく動きが遅くなっています。

Application.ScreenUpdating = False にて画面の更新を停止させ
高速化させたいのですが、なぜか停止しません。
これは仕様なのでしょうか。

Excel Ver : Excel2000

よろしくお願いします。

【64547】Re:画面更新の停止
発言  Abyss  - 10/2/23(火) 1:29 -

引用なし
パスワード
   マクロ文がSelectとかSelectionを
利用するコードではありませんか?

【64560】Re:画面更新の停止
質問  Yoshio.E  - 10/2/23(火) 20:58 -

引用なし
パスワード
   Abyss さん よろしくお願いします。

今グラフのコピーのマクロは以下の様になっています。
(VBA初心者のため、マクロの自動記録にて作成しています)
"グラフ1"、グラフ2"・・・はグラフの範囲に範囲名を
付けたものです


Application.ScreenUpdating = False

  Sheets("Sheet1").Select
  Application.Goto Reference:="グラフ1"
  Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
  Sheets("Sheet2").Select
  Range("B2").Select
  ActiveSheet.Paste

  Sheets("Sheet1").Select
  Application.Goto Reference:="グラフ2"
  Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
  Sheets("Sheet2").Select
  Range("G2").Select
  ActiveSheet.Paste
    ・  
    ・  
    ・  グラフの数繰り返し
    ・
  
Application.ScreenUpdating = True
  
以前からよく Application.ScreenUpdating を利用して画面の更新停止
を行っていたものですから、今回も可能と思っていました。
よろしくお願いします。

【64563】Re:画面更新の停止
発言  Abyss  - 10/2/23(火) 22:04 -

引用なし
パスワード
   コードの中からSelectとかSelectionとか
Gotoなどを整理すればよいかと思います。

例として最初の部分だと

>Application.ScreenUpdating = False
>
>  Sheets("Sheet1").Select
>  Application.Goto Reference:="グラフ1"
>  Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
>  Sheets("Sheet2").Select
>  Range("B2").Select
>  ActiveSheet.Paste

は、

Application.ScreenUpdating = False
Sheets("Sheet1").chartobjects("グラフ1").copypicture
Sheets("Sheet2").Range("B2").PasteSpecial

ように整理が出来ます。

【64565】Re:画面更新の停止
お礼  Yoshio.E  - 10/2/23(火) 23:39 -

引用なし
パスワード
   Abyss さん
こんばんは

サンプルマクロありがとうございます
1箇所 Abyssさんのサンプルマクロを変更することにより画面の更新なく、
今までない位の速さでコピー出来るようになりました。

Sheets("Sheet1").chartobjects("グラフ1").copypicture
            ↑
        chartobjects(1)

ご指導頂いた事で快適になりました。
ありがとうございました。

3056 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free