プロが教えるわが家の防犯対策術!

エクセルでセルがダブルクリックされたら
フォームを表示し、フォーム内のリストボックス
のクリック時の値をクラスのプロパティに実装
できるのでしょうか?
以前、仕事でそのようなクラスを呼び出して
使ったことがあるので。
エクセル側
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim cls As New Class1
'
cls.ListSet
'
End Sub
↑フォームの表示まで

クラスモジュール
Option Explicit
Public listVal As String
Public Function ListSet() As Boolean
'
On Error GoTo ErrFunc
'
ListSet = True
'
With UserForm1
With .ListBox1
.AddItem "a"
.AddItem "b"
.AddItem "c"
End With
'
.Show
'
End With
'
Exit Function
'
ErrFunc:
ListSet = False
End Function

Public Property Let val(ByVal data As String)
listVal = data
End Property

Public Property Get val() As String
val = listVal
End Property

フォーム側のListBox1_Clickで
どうすればよいか分からなくなりました。
根本的に間違っているのでしょうか?
ネットでさがしたのですが参考になる
サイトが見つかりません。
解決方法、宜しくお願い致します。

A 回答 (1件)

WithEvents宣言で コンボボックスをクラスモジュールに宣言して


Private WithEvents oCombo as CobBox

ListSetメソッドで
Set oCombo = UserForm1.ComboBo1
を実行

このオブジェクトのChangeイベントで
if oCombo.MatchFound then
  ' コンボボックスのテキストとリスト項目が一致した場合
  ' プロパティを変更
  val = oCombo.Text
end if
といった具合にしてはいかがでしょう
    • good
    • 0
この回答へのお礼

有難うございました。(_ _)
一発でできました。
大変参考になりました。

お礼日時:2007/12/15 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!