web-dev-qa-db-ja.com

VB Windows 7で6の「ユーザー定義型が定義されていません」エラー

私はWindows 7を使用していて、プロジェクトはVB 6.0にあります。プログラムの実行中にエラーが発生します。次のエラーが表示されます。

ユーザー定義タイプが定義されていません。

これが私のコードです:

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
        Case "trace": Call mntrace_Click
        Case "snrplot": Call mnSnrplot_Click
        Case "skyplot": Call mnskyplot_Click
        Case "nmea": Call mnNmea_Click
        Case "navigation": Call mnNavigation_Click
        Case "survey": Call mnSurvey_Click
        Case "pause/start": Call mnpause_Click
        Case "save": Call mnsave_Click
        Case "print": Call mnprint_Click
        Case "offline": Call mnoffline_Click
    End Select
End Sub

このエラーを解決するにはどうすればよいですか?

9
sunil.nishad87

エラーが発生すると、コンパイラーは関数宣言の最初の行を自動的に強調表示します。つまり、その行のどこかでエラーが発生します。時にはそれはあなたが望むほど役に立たないかもしれませんが、この場合、それはあなたにかなり多くを伝えることができます。

具体的には、関数宣言に表示される唯一の「ユーザー定義タイプ」(実際には、唯一の「タイプ」)はMSComctlLib.Button。コンパイラのエラーメッセージがここに伝えているのは、MSComctlLib.Buttonです。したがって、ユーザーが何を話しているのかわからないことが多いため、「ユーザー定義」型であると想定しています。 :-)

どちらの方法でも、修正は簡単です。コンパイラにMSComctlLib.Buttonです。この場合、それがユーザー定義型であると想定することは間違っていました。実際には、Microsoft Windows Common Controls Libraryで提供されるbuttonコントロールです。 VB 6にこのコントロールについて伝えるには、対応するコンポーネントをプロジェクトに追加する必要があります。次の手順に従ってください:

  1. 「プロジェクト」メニューから「コンポーネント」を選択します。

  2. 表示されるダイアログボックスで、リストの約2/3をMまでスクロールします。 「Microsoft Windows Common Controls 6.0」と「Microsoft Common Controls-2 6.0」の両方の項目でチェックを入れます。 (サービスパックの指定が異なっていても心配はいりません。)

    Components dialog in VB 6 IDE

  3. OKボタンをクリックします。手っ取り早い場合は、ツールボックスに追加されている追加のコントロールが表示されます。これらは、追加したコンポーネントライブラリによって提供されるコントロールです。これらのコントロールの中には、Buttonと呼ばれるものがあります。

最後に、プロジェクトを再度コンパイルして実行してみます。今度はコンパイラがMSComctlLib.Buttonタイプです。それでも表示されない場合は、ツールバーに表示されるボタンです。ツールバーコントロールはCommon Controlsライブラリによって提供され、そのツールバーに表示される個々のボタンを定義するタイプが含まれています。

25
Cody Gray

他の場所からそのコードをコピーして貼り付けたと思います。通常、MSComctlLibを参照する場合は、タイプライブラリにアクセスする前に、最初にここでCody Grayが述べた手順を実行します。

0
Jkyle Landicho

オブジェクトライブラリへの参照がないようです。

(他の場所でエラーなしに実行しましたか?)

0