MS Forms 2.0 コンボボックスのオブジェクト渡しについて

解決


HogeHoge  2007-10-18 22:22:06  No: 99591

お世話になっております。
VB6、XPHEです。

Microsoft Forms 2.0のコンボボックスをVB6のFormに無理やり(?)貼り付
けたテストプログラムの動作について質問するものです。

' Microsoft Forms 2.0
Private Sub Combo20_Click()
    Call HogeHoge(Me.Combo20)
End Sub

Private Sub HogeHoge(Combo As ComboBox)
    Debug.Print Combo20.Text
End Sub

このように、コンボボックスオブジェクトをサブルーチンに渡そうとすると

「型が違う」と怒られます。
安易ですが、引数をObject型とすると怒られはしませんが

Private Sub HogeHoge(Combo As Object)
    Debug.Print Combo20.Text
End Sub

オブジェクトのプロパティ(ここではText)は取得できません。

引数の型定義の問題なのかそれ以前の問題なのかも分かってもいませんが
この件について解説頂ければ幸いです。

以上です、よろしくお願い致します。


もげ  2007-10-18 22:59:52  No: 99592

Forms2.0のコンボボックスはMSFormsクラスのメンバでMSForms.ComboBox
VB6.0のコンボボックスはVBクラスのメンバでVB.ComboBox
ですね。

>Private Sub HogeHoge(Combo As Object)
>    Debug.Print Combo20.Text
>End Sub

受け取った変数を使っていないコーディングミスとか...(^^;?

こちらの環境(WinXPProSP2+VB6.0SP6)では、
下記のいずれでもTextプロパティは取得可能でした。
Sub HogeHoge(obj As Object)
    Debug.Print TypeName(obj), obj.Text
End Sub
Sub HogeHoge1(obj As Control)
    Debug.Print TypeName(obj), obj.Text
End Sub
Sub HogeHoge2(obj As MSForms.ComboBox)
    Debug.Print TypeName(obj), obj.Text
End Sub

なお、以下のような問題があるのでMSForms.〜の使用は、
積極的に薦める気はしません。

[VB] FM20.DLL を使用している Visual Basic アプリケーションの
 "Error 7 - Out of Memory" エラー メッセージ
http://support.microsoft.com/kb/241245/ja
[FM20.DLL の使用と再配布について]
http://support.microsoft.com/kb/224305/ja


HogeHoge  2007-10-18 23:16:25  No: 99593

もげさん、レスありがとうございます。

>>Private Sub HogeHoge(Combo As Object)
>>    Debug.Print Combo20.Text
>>End Sub
>
>受け取った変数を使っていないコーディングミスとか...(^^;?

すみません、自分のタイプミスでしたm(_)m

Private Sub HogeHoge(Combo As Object)
    Debug.Print Combo.Text
End Sub

でした。

>Forms2.0のコンボボックスはMSFormsクラスのメンバでMSForms.ComboBox

ありがとうございます。これが知りたかったのです。

>[VB] FM20.DLL を使用している Visual Basic アプリケーションの
> "Error 7 - Out of Memory" エラー メッセージ
>http://support.microsoft.com/kb/241245/ja

これは知り得ませんでした。有益な情報ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加