【Excel VBA】StatusBarが表示されない

問題


まったく同じコードでも、Excel2010だとちゃんと表示されるんだけどなぁ。
Application.StatusBar以外は問題ないからとりあえずそのまま使ってるけど・・・。

へなちょこはめんどくさがりやだから、進捗状況用のフォームとか作るのめんどくさいもん。
今処理してるファイルのファイル名さえわかればいいの。
よし!!
久しぶりにコードとご対面してみようかな。


やってみた1


ググってみたら、Application.StatusBarの前にDoEventsを入れてみては?ってゆー意見が多々。
とりあえず入れてみる。


With Application
.ScreenUpdating = False
.DisplayAlerts = False
.StatusBar = "処理中・・・"
End With
  ・
  ・
  ・
targetFile = Dir(targetPath & "\*.xls*")
  ・
  ・
  ・
Do While targetFile <> "" And InStr(targetFile, "~$") = 0
DoEvents
Application.StatusBar = targetFile & " 処理中・・・"



状況は変わらず。
Application.StatusBarの後にもDoEvents入れたけど、やっぱり表示されない。


やってみた2

ループ2回目で中断して、眺めてみる。

うーーん。
targetFileは問題なく開いてて、StatusBarはちゃんと表示されてるんだけどなぁ・・・。

・・・。

・・・・・・。

・・・・・・っっ!!!

ちょっと関係ない話思い出した!!

Excel2016で[上下に並べて表示]をしたときに、上のウインドウにも下のウインドウにもリボンが表示されるので
「何これ。超うざい」
って思って仕様を確認したら、Excel2013から、ファイルを開いたり新規ブックを作成すると、新しいインスタンスが作られるそうな。
「同じウインドウで開く」とゆー概念がなくなったようです。
どーしてそーなった?Microsoftよ・・・。
シングルで不満はなかったのに。
いや、むしろシングルのほうがいいんだけど。

はい。話戻ります。


つまり、Excel2010は
0035_1.png
1つのExcelウインドウで複数のファイルが開いている
ウインドウが1つだから、どちらのファイルがアクティブであってもStatusBarは表示される。

一方Excel2016は
0035_2.png

targetFileとマクロ実行ファイルはウインドウが別。
マクロ実行中は、targetFileはバックグラウンドで見えないけど、ActiveなのはtargetFileなのよね。

StatusBarはApplicationクラスだから、ブックの指定はできず、今Activeなブックのウインドウに表示される。


ってことは、StatusBar表示直前に、マクロ実行ファイルをActiveにすればいいんじゃん!?


With Application
.ScreenUpdating = False
.DisplayAlerts = False
.StatusBar = "処理中・・・"
End With
  ・
  ・
  ・
targetFile = Dir(targetPath & "\*.xls*")
  ・
  ・
  ・
Do While targetFile <> "" And InStr(targetFile, "~$") = 0
DoEvents
ThisWorkbook.Activate
Application.StatusBar = targetFile & " 処理中・・・"




マクロを実行してるファイルのStatusBarにファイル名が表示されました♪
ご満悦♪♪
DoEventsはなくてもたぶん大丈夫だけど、 念のため。 消し忘れw

それにしても、こーゆー仕様変更やめてほしいなぁ。
一見関係なさそうなとこで、いろいろ問題が起こるんだもんなぁ。


注意

?@図まで作って解説風なことを言ってますが、あくまでへなちょこの見解です。
Microsoftの公言ではありません。

?Aへなちょこは、オブジェクトは必ずオブジェクト変数に格納して、オブジェクト変数をあれこれします。
ThisWorkBookをActiveにしているので、その後オブジェクトの指定は必須ですよ。
指定してないと悲劇が起こるかも・・・。








2018年02月01日

この記事へのコメント
バージョンが変わると、地味に仕様が変わったりするんですよねぇ。
しかも大々的には公表してくれない・・・。
へなちょこは最近この手の処理を書いてないので現在のバージョンではどうなのかは不明ですが、ActivateとDoEventsで解決できて良かったです♪
DoEventsがないとダメな件は、へなちょこも参考にさせていただきます。
Posted by at 2023年03月21日 15:23
ありがとうございます。解決しました。
ただ、またEXCELの仕様が変わったのかもしれませんが、DoEventsがないとダメでした。
Posted by at 2023年03月11日 23:43
ざっくりな図ですが、伝わってよかったです♪
Posted by へなちょこ at 2021年07月15日 13:22
へなちょこさん。
とても分かりやすい解説で感動ものです。ありがとうございます。
Posted by haru at 2021年07月10日 08:21
>tanochanさん
閲覧ありがとうございます。
解決できて良かったです♪
Posted by へなちょこ at 2019年08月17日 11:39
ありがとうございます!!!
doeventsではどうにもならず、途方に暮れておりましたが、こちらのページに辿り着いて解決しました&#12316;&#12316;&#12316;!!!
感謝感激です。
Posted by tanochan at 2019年08月15日 18:14
>Akishige Saitoさん
へなちょこもなかなか答えにたどり着けず、半年近く放置してました笑
同じことで悩んでる方がいらっしゃると思って、記事にしてみました。
あまり説明がうまくないですが、お役に立てて何よりです(^^♪
Posted by へなちょこ at 2018年11月01日 20:34
ありがとう!解決できた!
さんざん調べて全然わからなかったのに、あなたの解説で一気に解決できました!
ほんとうにありがとう!!!
Posted by Akishige Saito at 2018年10月31日 22:54
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7228856
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: