Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA如何知道哪个动态创建的UserForm文本框已更改?_Vba_Excel_Event Handling_Excel 2010 - Fatal编程技术网

Excel VBA如何知道哪个动态创建的UserForm文本框已更改?

Excel VBA如何知道哪个动态创建的UserForm文本框已更改?,vba,excel,event-handling,excel-2010,Vba,Excel,Event Handling,Excel 2010,我有一个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

我有一个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
我想将更改后的值写回相应的单元格。 我已经能够在名为CCompHandler的
类上获取框更改的时间和带有此代码的新值:

Option Explicit

Public WithEvents TextBoxGroup As MSForms.TextBox

Private Sub TextBoxGroup_Change()

    MsgBox TextBoxGroup

End Sub
所以。。关于如何获取已更改的文本框,有什么想法吗? 或者有没有更好的方法?
提前感谢

标签属性通常用于类似的内容。在创建时添加如下内容:

With tb
  ...
  .Tag = i.Address
...
End With
Debug.Print tbWhoseValueHasChanged.Tag
然后,您可以稍后访问标记属性,方法如下:

With tb
  ...
  .Tag = i.Address
...
End With
Debug.Print tbWhoseValueHasChanged.Tag

您的代码段有许多未定义/不清楚的变量,包括
i
。我在上面假设它是一个范围变量。

CompHandler是如何定义的?组件是用户表单吗?我不能不做大量猜测就测试或摆弄它。介意把剩下的代码告诉我们吗?@DanielCook:我已经说得更清楚了。谢谢!但是我如何在类处理程序中使用它呢?或者有更好的方法使用它吗?你说过你可以在文本框更改时获取,所以只需访问它的Tag属性即可。它是持久的。请参阅编辑。它刚刚起作用。非常感谢。我觉得这只是一个愚蠢的问题。