突然、開発環境がおかしくなりコンパイルが通りません。
以下現象です。
完全コンパイル実施後、
『コンパイルエラー:型宣言文字と宣言されたデータ型が一致しません。』を
表示します。
エラートラップを「エラー発生時に中断」させると
関数『Left$』でいつも落ちます。
落ちた個所は、今まで既存で起動できていた為、直接関係ないと思われます。
また、関数『Left$』をコメントアウトしても
別モジュールの中で関数『Left$』で落ちてしまいます。
VBがおかしくなったのでしょうか?
原因調査する個所・あたりを付ける個所をご教示ください。
宜しくお願いします。
プロジェクトの参照設定でチェックが入ってるのを書いてみて
チェック入りは、以下のものです。
VB For Applications
VB runtime objects and procedures
VB objects and procedures
OLE Automation
MS DAO 3.5 Object Library
MS Multimedia Contorol 5.0 (sp2)
Msghook OLE Custom Contorl module
一見普通そうですね。
VBがおかしいのか、そのプロジェクトのみがおかしいか
切り分けてみましょう。
新しくプロジェクトを作成して適当なボタンの中に
Left$の処理を入れても同じですか?
同じとき
→VBを再インストールして見る
新規プロジェクトは正常に動くとき
→新しくプロジェクトを作成し、おかしくなったプロジェクトのソースを移す
ぐらいでしょうか。
VB再インストールしても駄目でした。
他に方法はありませんか?
私見ですが、この手の問題はPCが手元にあってもなかなか原因がつかめないのに
ましてや、他人のPCでしかも中が調べられないとなると一般的な回答はこうなります。
OSから再インストールとか
バリアント処理のLeftはどうなります?
一応ウィルス検査もしておいたほうがいi(ry
( ´Д`)<ぇ…もうしたって…スマン
あと、OSの再インストールをしたということは、
030さんが言っていた
> 新しくプロジェクトを作成して適当なボタンの中に
> Left$の処理を入れても同じですか?
を実施したと思うが、それについて何もかかれていないのがちょと気になった。
※再現不能なのでヘンなことを書いていそうで怖いな…
エラーを見る限り、「Left」という名の
文字列型でない変数か関数をどっかで宣言しているようにみえるのだが・・・。
システムやコンパイラを疑うより前に
まず、ひっかかった「Left$」で右クリックして
「定義」を探してみるべきでは?
VB.Form.Leftプロパティの「Left」とVBA.Strings.Left$関数の「Left」の
コンフリクトですよね。比較的よくある有名な問題です。
で、解決策は、単純に、
「Left$」としてあるところを
「VBA.Left$」、「Strings.Left$」、「VBA.Strings.Left$」
のどれかにすることでしょう。
# 特定のタイプライブラリを参照設定したりすると発生するようです。
VBを再インストールしてみたといっているのだから
> 新しくプロジェクトを作成して適当なボタンの中に
> Left$の処理を入れても同じですか?
を試したんだと思いますが。
>xyzさん
初期状態(新しくプロジェクトを作成した直後)で特定のタイプライブラリ
が参照されているという可能性があるのであれば、初期状態の参照設定を
書いてみてください。
ツイート | ![]() |