突然の出会い
ブックを開くときにフォームを表示する。
Private Sub Workbook_Open()
UserForm1.Show vbModeless
End Sub
よくあるやつ。
いつも通りに書いて、ファイルを開きなおしたら
Σ(゚Д゚)
なんで!?
[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で出てくるってどーゆーこと!?
ふつーだったら
こーゆーのでしょ。
MsgBoxのエラーなんて初めて見た。
しかもMsgBoxだったらふつーは、タイトルバーはExcelかMicrosoft Excelじゃない?
絶対VBAのバグだと疑ってます。
追記
TextBoxのControlSourceと、ListBoxのRowSourceでも出ました。