dポイントプレゼントキャンペーン実施中!

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"
の時点で画面が更新されてしまいます。
使用法が誤っていますか?

A 回答 (3件)

どのような方法で非更新が出来ないことを確認していますか?



その方法を提示していただければ納得いくと思います。
    • good
    • 0

NO1の人の回答を、ちゃんと読みましょう。



たぶん、質問者が期待しているのは、
以下にする様にするだけ良いのでは

Sub Test()
Application.ScreenUpdating = False

Cells(1, 1) = "test"
Cells(1, 2) = "test2"

MsgBox Application.ScreenUpdating

Application.ScreenUpdating = True
End Sub

プログラムは、順番に動きます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
問題はデバッグで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
として一気に実行したところ、正常に更新非更新になっていることが確認できました。

実は、現在作成中のプログラムでうまく非更新できず、上記サンプルプログラムでの確認でも非更新ができなかったため質問を投稿しました。
更新の使い方は問題ないことがわかったので、もう一度プログラムを読み直して、非更新がならない原因を見つけたいと思います。
質問の問題は解決したため、質問を締め切らせていただきます。
ありがとうございました。

お礼日時:2008/01/11 08:49

> Application.ScreenUpdating=True



があればすぐ更新されます。

なくてもこのプログラムが終了すれば更新されます。
    • good
    • 0
この回答へのお礼

参考に書いたプログラムが間違っていました。
申しわけありません。
正しくは
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"
を通過した時点ですでに更新されている、
ということです。
以前は正常に更新非更新ができていたのですが、いつの間にかならなくなっていました、、、。

お礼日時:2008/01/10 18:55

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

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