• ベストアンサー

Application.ScreenUpdatingがならなくなった

windowsXP SP2 Excel2000を使用しています。 Application.ScreenUpdating=false で画面非更新ができません。 sub Test() Application.ScreenUpdating=false msgbox Application.ScreenUpdating=false cells(1,1) = "test" Application.ScreenUpdating=True end sub とするとちゃんと、 メッセージではFalseが出るのですが、 cells(1,1) = "test" の時点で画面が更新されてしまいます。 使用法が誤っていますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.3

どのような方法で非更新が出来ないことを確認していますか? その方法を提示していただければ納得いくと思います。

その他の回答 (2)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

NO1の人の回答を、ちゃんと読みましょう。 たぶん、質問者が期待しているのは、 以下にする様にするだけ良いのでは Sub Test() Application.ScreenUpdating = False Cells(1, 1) = "test" Cells(1, 2) = "test2" MsgBox Application.ScreenUpdating Application.ScreenUpdating = True End Sub プログラムは、順番に動きます。

ONEMAKE
質問者

お礼

回答ありがとうございます。 問題はデバッグで1行ずつ動かして確認していたことにありました。 Sub Test()  Dim i As Integer  Application.ScreenUpdating = False  For i = 1 To 20000 Cells(i, 1) = i  Next  Application.ScreenUpdating = True End Sub として一気に実行したところ、正常に更新非更新になっていることが確認できました。 実は、現在作成中のプログラムでうまく非更新できず、上記サンプルプログラムでの確認でも非更新ができなかったため質問を投稿しました。 更新の使い方は問題ないことがわかったので、もう一度プログラムを読み直して、非更新がならない原因を見つけたいと思います。 質問の問題は解決したため、質問を締め切らせていただきます。 ありがとうございました。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

> Application.ScreenUpdating=True があればすぐ更新されます。 なくてもこのプログラムが終了すれば更新されます。

ONEMAKE
質問者

お礼

参考に書いたプログラムが間違っていました。 申しわけありません。 正しくは Sub Test()  Application.ScreenUpdating = False  MsgBox Application.ScreenUpdating  Cells(1, 1) = "test"  Cells(1, 2) = "test2"  Application.ScreenUpdating = true End Sub です。 >> Application.ScreenUpdating=True >があればすぐ更新されます。 そこで更新されればいいのですが、私のEXCELでは Cells(1, 1) = "test" を通過した時点ですでに更新されている、 ということです。 以前は正常に更新非更新ができていたのですが、いつの間にかならなくなっていました、、、。

関連するQ&A