2

基本的に、実行時に生成されるアイテムのリストを作成しています。アイテムはラベルとしてユーザーフォームにリストされます(アイテムはリンクされたリストに保存されます)。各アイテムにスピンボタンを追加して、リスト内でアイテムを上下に移動できるようにします。スピンボタンは問題なく作成されていますが、コーディングしたイベントが機能しませんか?? 何が間違っているのかわかりません。おそらく単純なもの...

これは、イベントを保持するクラス モジュールです: cls_Spin_Btn

Private WithEvents Spin_Events As SpinButton

Private Sub Spin_Events_SpinUp()

    Debug.Print "Hey. Spin button worked."

End Sub

Public Property Set SetNewSpinButtion(newSpinBtn As MSForms.SpinButton)

    Set Spin_Events = newSpinBtn

End Property

これは、モジュールから呼び出しているコードです。

Function AddRunToForm(f As UserForm, r As ProductionRun, top As Integer) As Integer

Dim Run_SpinBtn As MSForms.SpinButton
Dim spinBtn As cls_Spin_Btn

Set Run_SpinBtn = f.Controls.Add("Forms.SpinButton.1", r.ProdID & "_SBtn", True)
Set spinBtn = New cls_Spin_Btn

With Run_SpinBtn

    .top = ProdID_Lbl.top
    .Left = 5
    .height = 10
    .Width = 12
    .height = 18
    .Visible = True

End With

Set spinBtn.SetNewSpinButtion = Run_SpinBtn

AddRunToForm = ProdID_Lbl.top + ProdID_Lbl.height

End Function

このコードは、各アイテムのラベルとスピンボタンを作成する同じモジュール内のループから呼び出されます。私は何を間違っていますか?どんな助けでも大歓迎です。

4

1 に答える 1

1

ユーザーフォームコードモジュールに、これを入れます

Private mcolSpinButtons As Collection

Public Property Get SpinButtonCollection() As Collection

    If mcolSpinButtons Is Nothing Then Set mcolSpinButtons = New Collection

    Set SpinButtonCollection = mcolSpinButtons

End Property

これにより、ユーザーフォームが開いている限りスコープ内に留まるモジュールレベルの変数にアクセスできます。そのコレクションに cls_Spin_Btn インスタンスを配置すると、それらもスコープ内に留まります。

次に、関数で新しいスピン ボタン クラス インスタンスを作成したら、それをコレクションに追加します。

f.SpinButtonCollection.Add spinBtn, spinBtn.Name
于 2012-08-07T18:51:52.290 に答える