1

実行時にテキストボックスを作成するExcelユーザーフォームがあります。次のようにコーディングします。

Dim CompHandler() As New CCompHandler
Dim tb As MSForms.TextBox   
Dim count As Integer
For i in Range(something)
    If i = anotherthing Then
        Set tb = UserForm1.Controls.Add("Forms.TextBox.1", "tb" & count)
        With tb
            .Width = iTbWidth
            .Top = count * distance
            .Left = iTbLeft
            .Height = iTbHeight
            .Value = Cells(row, column)
            ReDim Preserve CompHandler(0 To count)
            Set CompHandler(count).TextBoxGroup = tb
        End With
    count = count + 1
    End If
Next i

変更した値を対応するセルに書き戻したい。ボックスが変更されたとき、およびこのコードを使用して新しい値を取得することは、すでに可能ですclass called CCompHandler

Option Explicit

Public WithEvents TextBoxGroup As MSForms.TextBox

Private Sub TextBoxGroup_Change()

    MsgBox TextBoxGroup

End Sub

では、どのテキストボックスが変更されたかをどのように取得できるかについてのアイデアはありますか?それとも、それを行うためのより良い方法はありますか?前もって感謝します

4

1 に答える 1

3

Tagプロパティは通常、このようなものに使用されます。作成時に次のようなものを追加します。

With tb
  ...
  .Tag = i.Address
...
End With

その後、次のようにしてTagプロパティにアクセスできます。

Debug.Print tbWhoseValueHasChanged.Tag

コードスニペットには、を含む多くの未定義/不明確な変数が含まれてiいます。上記では範囲変数だと思いました。

于 2012-09-17T13:54:36.503 に答える