gpt4 book ai didi

vba - Excel-VBA 如何知道哪个动态创建的 UserForm TextBox 发生了变化?

转载 作者:行者123 更新时间:2023-12-04 22:09:22 26 4
gpt4 key购买 nike

我有一个在执行期间创建文本框的 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

所以..关于如何获得哪个文本框已更改的任何想法?
或者也许有更好的方法来做到这一点?
提前致谢

最佳答案

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

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

然后,您可以稍后访问 Tag 属性,例如:
Debug.Print tbWhoseValueHasChanged.Tag

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

关于vba - Excel-VBA 如何知道哪个动态创建的 UserForm TextBox 发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com