Excel-VBA如何知道哪个dynamic创build的UserForm TextBox已经改变?

我有一个Excel用户窗体,在执行期间创build文本框。 代码如下:

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 

所以..任何想法,我怎样才能得到哪个文本框已经改变? 或者,有没有更好的方法呢? 提前致谢

标签属性通常用于这样的事情。 在创build时添加如下内容:

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

然后,您可以稍后访问Tag属性,如下所示:

 Debug.Print tbWhoseValueHasChanged.Tag 

你的代码片段有很多未定义/不清晰的variables,包括i 。 我认为这是上面的范围variables。