我有一个名为'UserForm'的excel vba表单。总的来说,有一个按钮(名称为“buttonAdd”),该功能可以动态创建/添加基于输入(来自“a”variabel)值的文本框。这是代码。
Public Sub buttonAdd_Click()
Dim a As Integer
a = TextBox1.Value
Dim cCntrl As Control
For i = 1 To a
Set cCntrl = Me.Controls.Add("Forms.TextBox.1", "quarter", True)
With cCntrl
.Name = "quarter" & d
.Width = 150
.Height = 25
.Top = 100 + (d * 25)
.Left = 220
.ZOrder (0)
End With
Next i
现在,我有一个问题。我无法从这些动态文本框中获取/获取值。我尝试使用此代码将值保存到'A1'单元格中,但它不起作用。
Private Sub SaveButton_Click()
Dim a As Integer
Dim Ws As Worksheet
Dim cCntrl As Control
Set Ws = Worksheets("Sheet1")
Ws.Range("A1").Value = quarter1.Value
End Sub
我认为第一个动态文本框的名称是quarter1,但是当我试图获取该值时,它不起作用。无论如何还是暗示解决这个问题。只是说:只需取第一个文本框的值,将其写入,然后再取另一个,依此类推。
非常感谢。
答案 0 :(得分:0)
看起来你的问题很简单。您使用了d
而不是i
(代码中未定义d
)。我建议始终使用Option Explicit
。
Public Sub buttonAdd_Click()
Dim a As Long ' Minor, but Integer I sjust too short these days for a lot of things.
Dim i as Long
a = TextBox1.Value
Dim cCntrl As Control
For i = 1 To a
Set cCntrl = Me.Controls.Add("Forms.TextBox.1", "quarter", True)
With cCntrl
.Name = "quarter" & CStr(i) ' explicit rather than implicit conversion
.Width = 150
.Height = 25
.Top = 100 + (i * 25)
.Left = 220
.ZOrder (0)
End With
Next I
编辑:在.Add
命令中可能会出现更多错别字(例如,您可能想要"季度"&" 1"而不仅仅是"四分之一"?)但我现在还没有VBA参考资料来检查。