エクセルマクロVBA:アプリケーション
エクセルのちょっとしたテクニックを紹介します。
処理が実行中なら「実行中・・・」と表示するようにするには、どうしますか?画面のちらつきを抑えるコードを書いている場合、ちょっと長い処理をさせると、処理中なのか、そうでないのかわからなくなるときがありませんか?マクロの処理中に文字列を表示させることが出来ます。
表示する場合のコードは、
Application.StatusBar = "実行中・・・"
表示を解除する場合のコードは、
Application.StatusBar = False
これで実行中ならステータスバーに文字が表示されるのでわかりますね。あと、ステータスバーに文字を表示させるコードを書いたら、必ず解除するコードも書いてくださいね。書かないと処理が終わっても、ステータスバーの文字がそのままになってしまいます。
これを応用して処理の進み具合を把握することが出来ます。そうです。ループ構文に組み込んで使用します。
以下のサンプルコードを試してみてくださいね。
'***************************************
'ステータスバーに進捗状況を表示する
'***************************************
Sub Test13()
Dim Rw As Long
Dim Lastrow As Long
For Rw = 1 To 5000
Cells(Rw, 1).Value = Rw
Application.StatusBar = Rw & "件書込み中・・・"
Next Rw
Application.StatusBar = False
MsgBox "書き込み終了、今度は消去します。"
Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For Rw = 1 To Lastrow
Cells(Rw, 1).Value = ""
Application.StatusBar = Rw & "件消去中・・・"
Next Rw
Application.StatusBar = False
MsgBox "終了しました"
End Sub
処理が実行中なら「実行中・・・」と表示するようにするには、どうしますか?画面のちらつきを抑えるコードを書いている場合、ちょっと長い処理をさせると、処理中なのか、そうでないのかわからなくなるときがありませんか?マクロの処理中に文字列を表示させることが出来ます。
表示する場合のコードは、
Application.StatusBar = "実行中・・・"
表示を解除する場合のコードは、
Application.StatusBar = False
これで実行中ならステータスバーに文字が表示されるのでわかりますね。あと、ステータスバーに文字を表示させるコードを書いたら、必ず解除するコードも書いてくださいね。書かないと処理が終わっても、ステータスバーの文字がそのままになってしまいます。
これを応用して処理の進み具合を把握することが出来ます。そうです。ループ構文に組み込んで使用します。
以下のサンプルコードを試してみてくださいね。
'***************************************
'ステータスバーに進捗状況を表示する
'***************************************
Sub Test13()
Dim Rw As Long
Dim Lastrow As Long
For Rw = 1 To 5000
Cells(Rw, 1).Value = Rw
Application.StatusBar = Rw & "件書込み中・・・"
Next Rw
Application.StatusBar = False
MsgBox "書き込み終了、今度は消去します。"
Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For Rw = 1 To Lastrow
Cells(Rw, 1).Value = ""
Application.StatusBar = Rw & "件消去中・・・"
Next Rw
Application.StatusBar = False
MsgBox "終了しました"
End Sub
エクセルのちょっとしたテクニックを紹介します。
エクセルマクロを記録して実行すると、同じシート内での処理でも画面がちらついたりしますよね。短い処理なら気にならないかもしれませんが、長い処理になると、気になってしまうのは私だけでしょうか?
画面のちらつきを抑えるコードを紹介します。
Application.ScreenUpdating = False
コードのはじめに書いておいてください。画面の更新をコード終了まで止めるので、画面がちらつかないようになります。また、処理速度を上げる効果もあるので、長い処理のときには、特に効果的です。
エクセルマクロを記録して実行すると、同じシート内での処理でも画面がちらついたりしますよね。短い処理なら気にならないかもしれませんが、長い処理になると、気になってしまうのは私だけでしょうか?
画面のちらつきを抑えるコードを紹介します。
Application.ScreenUpdating = False
コードのはじめに書いておいてください。画面の更新をコード終了まで止めるので、画面がちらつかないようになります。また、処理速度を上げる効果もあるので、長い処理のときには、特に効果的です。