アフィリエイト広告を利用しています
検索
カテゴリーアーカイブ
タグクラウド
最新記事

2018年02月01日

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

問題

昨年、MS-Officeが2016に変わってから、Application.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にしているので、その後オブジェクトの指定は必須ですよ。
指定してないと悲劇が起こるかも・・・。








この記事へのコメント
バージョンが変わると、地味に仕様が変わったりするんですよねぇ。
しかも大々的には公表してくれない・・・。
へなちょこは最近この手の処理を書いてないので現在のバージョンではどうなのかは不明ですが、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
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
プロフィール
へなちょこさんの画像
へなちょこ
都内に出没するOLっぽい何か。大好物はExcelと効率化。独学でVBAやAccessをいじり始め、早10年。 5歩歩くと忘れてしまうので、ここにメモしていきます。
プロフィール
記事ランキング
  1. 1. 【Excel VBA】ユーザーフォームのCaptionが文字化け
  2. 2. 【Office365 SharePoint】Notesへのリンクを貼りたい
  3. 3. 【Excel VBA】StatusBarが表示されない
  4. 4. 【Excel VBA】入力規則でアプリケーション定義エラー
  5. 5. 【Excel】最大化で起動してくれない件
  6. 6. 【Excel VBA】Workbook_openで「パス名が無効です」
  7. 7. 【Excel VBA】.xlsm→.xlsx保存でエラー
  8. 8. 【Win10】タスクバーのプレビューを非表示にしたい
  9. 9. 【Win10】エクスプローラーがフリーズする
  10. 10. 【Win10】再発!!PC再起動すると、クイック起動バーが消える
ファン