|
▼Kobasan さん:
おはようございます。
> 以前の記事に下記のものがあり、クラスモジュールを使って試したところ、「指定したオブジェクトは見つかりません」というエラーが出て、UserForm1が表示されません。
> クラスモジュールを使うのは初めてなと、本を見ても少しの説明しかのってないので、どこでミスしているのかよく分かりません。
> ユーザーフォームモジュールはUserForm1に貼り付け、CheckBoxは3つつくっています。クラスモジュールはClass1に貼り付けました。
>どなたか対策を教えて下さい。
以下のコードをそのままコピーして確認しましたが、
正常に動いていますよ(確認したのはExcel2000で)。
このコードは、Userform1にあるコントロールが
Checkbox1、Checkbox2、Checkbox3(これがチェックボックスコントロール)
Textbox1、Textbox2、Textbox3(これがテキストボックスコントロール)
というオブジェクト名でなければなりませんが、
これは正しく貼り付けられていますか?
何となくですが、テキストボックスがUserform1に貼り付けてないのでは?
>--------------------------
> 【10411】Re:イベントの処理をまとめて記述
>複数個の
> Private Sub CheckBox1_Click()
> ・・・
> End Sub
>
> Private Sub CheckBox2_Click()
> ・・・
> End Sub
> ・・・
>を1つにする方法?
>
> 【10412】Re:イベントの処理をまとめて記述
>クラスモジュールを使えばできそうですけど試してみますか?
>
>★ユーザーフォームモジュール
>Option Explicit
>Dim ColCls As Collection
>Private Sub UserForm_Initialize()
> Dim ClsT As Class1
> Dim i As Long
>
> Set ColCls = New Collection
> For i = 1 To 3
> Set ClsT = New Class1
> Call ClsT.propertysSet(Me("CheckBox" & i), Me("TextBox" & i))
> ColCls.Add ClsT
> Set ClsT = Nothing
> Next i
>End Sub
>
>Private Sub UserForm_Terminate()
> Set ColCls = Nothing
>End Sub
>
>★クラスモジュール(Class1)
>Option Explicit
>Private WithEvents Chk As MSForms.CheckBox
>Private Txt As MSForms.TextBox
>
>Sub propertysSet(ByVal ChkT As MSForms.CheckBox, ByVal TxtT As MSForms.TextBox)
> Set Chk = ChkT
> Set Txt = TxtT
>End Sub
>
>Private Sub Chk_Click()
> If Chk Then
> Txt.Value = 1
> Else
> Txt.Value = ""
> End If
>End Sub
>
>という感じです。
>違ったらすいません。
|
|