我有一个包含动态创建的文本框的Excel Userform。如果另一个文本框的值发生更改,我想更改一个文本框的值。
这是我的代码vba代码:
Sub UserForm_Initialize()
Dim cTextBox As Control
Dim totalfig As Integer
Dim a As String
Dim b As Integer
Set cntrls = New Collection
Set cTextBox = Controls.Add("Forms.TextBox.1", "HorseName")
cTextBox.Height = 25
cTextBox.Width = 400
cTextBox.Top = 5
cTextBox.Left = 30
cTextBox.Value = "Widgets"
cTextBox.Locked = True
cTextBox.Font.Size = 15
cTextBox.SpecialEffect = 0
cTextBox.BackColor = &H8000000F
cntrls.Add cTextBox, cTextBox.Name
For i = 1 To 2
a = "20 Big Widgets"
b = 20
Set cTextBox = Controls.Add("Forms.TextBox.1", "Product_" & i)
cTextBox.Height = 18
cTextBox.Width = 100
cTextBox.Top = 36 + (22 * i)
cTextBox.Left = 36
cTextBox.Value = a
cTextBox.BackColor = &H8000000F
cntrls.Add cTextBox, cTextBox.Name
Set cTextBox = Controls.Add("Forms.TextBox.1", "Units_" & i)
cTextBox.Height = 18
cTextBox.Width = 50
cTextBox.Top = 36 + (22 * i)
cTextBox.Left = 138
cTextBox.Value = b
cTextBox.BackColor = &H8000000F
cntrls.Add cTextBox, cTextBox.Name
Next i
End Sub
这是输出:
现在,假设用户更改了第一个" 20个大小部件"到" 30大小工具" 我想第二列(在第一行中)包含自动从20改为30的小部件数。如下所示:
如果我使用静态文本框,我理解如何完成此操作,但是如何使用动态文本框完成此操作。
提前感谢您的帮助。
答案 0 :(得分:0)
您已将固定值分配给变量b。尝试根据第一个文本框的值进行更改。添加此行。
b=WorksheetFunction.Left(a,Search(" ",a)-1)
现在,我还没有亲自尝试过,但是应该可以。但是,如果没有,则只需从一个单元格中提取“ a”的值,然后在其旁边的单元格中应用上述相同的公式,然后从该单元格中提取b的值。
让我知道是否有任何疑问。