我有一个userform,允许用户在三个文本框中输入信息以进行登录删除。此数据将输入到其后面的Excel工作表中。我想在用户将数据输入第一个框后再创建另外3个框。这种模式会重演。
第一个框分配给'删除登录!A2
目前,我一直试图这样做,但无济于事。
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Left(Target.Address, 2)
Case Is = "$A"
Dim cCntrl As Control
Dim i As Integer
For i = 0 To 2
Set cCntrl = UserForm1.Frame10.Controls.Add("Forms.TextBox.1", "Login" & i & Target.Row + 1, True)
With cCntrl
.Width = UserForm1.TextBox240.Width
.Height = UserForm1.TextBox240.Height
.Top = (10 + UserForm1.TextBox240.Height) * (Target.Row - 3)
.Left = UserForm1.TextBox154.Left + (UserForm1.TextBox154.Width) * i
.ControlSource = "'Delete Logins'!" & Chr(65 + i) & Target.Row + 1
End With
Next
End Select
End Sub
前三个框已正确分配,但未创建新文本框。
答案 0 :(得分:0)
正在创建文本框,但我没有正确放置它们。他们基本上堆叠在一起。
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Left(Target.Address, 2)
Case Is = "$A"
'If Target.Value <> "" Then
'If UserForm1 <> Nothing Then
Dim cCntrl As Control
Dim i As Integer
For i = 0 To 2
Set cCntrl = UserForm1.Frame10.Controls.Add("Forms.TextBox.1", "Login" & i & Target.Row + 1, True)
With cCntrl
.Width = UserForm1.TextBox240.Width
.Height = UserForm1.TextBox240.Height
.Top = (10 + UserForm1.TextBox240.Height) * (Target.Row - 1)
.Left = UserForm1.TextBox240.Left + (UserForm1.TextBox240.Width) * i
.ControlSource = "'Delete Logins'!" & Chr(65 + i) & Target.Row + 1
End With
Next
' End If
End Select
End Sub