尊敬的StackOverFlow成员,
我尝试在用户窗体中动态创建texbox,并根据选项卡中的值设置默认文本。
首先,用户填写图片中的文本框
当他单击上方的按钮时,它将调用在同一用户窗体中创建文本框的函数。恰好等于文本框值的总数,此外,对于值“ 0”,它算作要添加的1个文本框。
我想要的是当它遇到0
值时,我希望创建的新texbox将defaut文本设置为“ null”。像这样:
我的代码:
For i = 0 To UBound(tabValTextBox)
valTemp = tabValTextBox(i)
If valTemp = 0 Then
iTextBoxMasqueA = iTextBoxMasqueA + 1
Set textBoxCableA = UserForm1.Controls.Add("Forms.TextBox.1")
colTextBoxCableA.Add textBoxCableA
With textBoxCableA
.Name = "cable" & iTextBoxCableA
.Top = iTextBoxCableA * textBoxCableA.Height + 50
.Left = 150
.Text = "Nul"
End With
Else
For j = 0 To valTemp - 1
iTextBoxCableA = iTextBoxCableA + 1
Set textBoxCableA = UserForm1.Controls.Add("Forms.TextBox.1")
colTextBoxCableA.Add textBoxCableA
With textBoxCableA
.Name = "cable" & iTextBoxCableA
.Top = iTextBoxCableA * textBoxCableA.Height + 50
.Left = 150
End With
Next j
End If
Next i
tabValTextbox()
是一个选项卡,其中包含左侧文本框的值。
但是,我得到的结果是这样的:
我没有得到预期的文本框。
我不知道我在哪里缺少什么。我想从中学到东西,所以如果可能,请向我解释我在这里做错了什么,或者我的方法缺乏见识。
答案 0 :(得分:1)
尝试一下:
For i = 0 To UBound(tabValTextBox)
valTemp = tabValTextBox(i)
iTextBoxCableA = iTextBoxCableA + 1
If valTemp = 0 Then
Set textBoxCableA = UserForm1.Controls.Add("Forms.TextBox.1")
colTextBoxCableA.Add textBoxCableA
With textBoxCableA
.Name = "cable" & iTextBoxCableA
.Top = iTextBoxCableA * textBoxCableA.Height + 50
.Left = 150
.Text = "Nul"
End With
Else
For j = 0 To valTemp - 1
Set textBoxCableA = UserForm1.Controls.Add("Forms.TextBox.1")
colTextBoxCableA.Add textBoxCableA
With textBoxCableA
.Name = "cable" & iTextBoxCableA
.Top = iTextBoxCableA * textBoxCableA.Height + 50
.Left = 150
End With
Next j
End If
Next i
我已将iTextBoxCableA
增量移到零条件之外,并在不使用时完全删除了iTextBoxMasqueA
增量。
我自己无法测试,但我认为它将解决重叠的问题。