2020年06月01日

【Excel VBA】Workbook_openで「パス名が無効です」

突然の出会い


ブックを開くときにフォームを表示する。

Private Sub Workbook_Open()
 UserForm1.Show vbModeless
End Sub


よくあるやつ。

いつも通りに書いて、ファイルを開きなおしたら
20200530_1.png
Σ(゚Д゚)
なんで!?

[OK]を押したら、そのままファイル閉じた・・・。

もう1回ファイルを開いたら、エラーは出ないけど、Excelのタイトルバーに、ファイル名[修復済み].xlsmって出てる。
こ、壊れた・・・??

まだそんなに作りこんでなかったから、新規ブックにモジュールをインポートしてもう一回。

やっぱり同じエラーが出る。



コード特定

セーフモードでファイルを開いて、Private Sub Workbook_Open()から実行してみたら、

UserForm1.Show vbModeless

で止まりました。
えええぇぇ!?



環境?

エラーが出たのは、Win10 64bit + Office2019 64bit。

埃かぶってるサブノートPCを引っぱり出してみた。
この子はWin7 32bit + Office2010 32bit。
(サポート切れてるけど、完全オフラインだから許してw)

こっちでも出た。



対策

修復済みになったファイルで、フォームを実行するとエラーは出ないでちゃんと表示されるから、コードに問題はなさそうなんだけどなぁ。

いつもと違うとこ・・・。

うーーーん。



アッ!!
今回だけいつもと違うとこあった!!!

いつもはチェックボックスのValueは都度コードで判定してるんだけど、今回は数が多くてめんどくさいのと、今後増減の可能性大だから、セルにリンクさせてた!

片っ端からControlSorceのセル番地を削除してみたら、エラーは消えましたヾ(*´∀`*)ノ

でも・・・、リンクセル使いたい(>ω<)
とゆーか、リンクセル前提で作っちゃったもん。
使えないと困る。
設計からやり直し、めんどくさい。


ダメもとで、InitializeでControlSorceを設定したら、エラーは出ませんでした♪
こんなカンジ。

Private Sub UserForm_Initialize()
 Cbox1.ControlSource = "Sheet1!A1"
End Sub




調査

さんざんググってみたけど、「パス名が無効です」は、ファイル関連ばっか。
MSDNも見つからなかったです。
見つけた方、是非教えてください。

てか、ControlSorceが原因なのに、「パス名が無効です」ってエラーメッセージおかしいよ!
つかそもそも、エラーがMsgBoxで出てくるってどーゆーこと!?
ふつーだったら
20200530_2.jpg
こーゆーのでしょ。
MsgBoxのエラーなんて初めて見た。
しかもMsgBoxだったらふつーは、タイトルバーはExcelかMicrosoft Excelじゃない?

絶対VBAのバグだと疑ってます。



追記

TextBoxのControlSourceと、ListBoxのRowSourceでも出ました。










タグ: バグ Excel VBA
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: