Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用指定的源值动态创建新文本框?_Excel_Vba_Textbox_Userform - Fatal编程技术网

Excel 如何使用指定的源值动态创建新文本框?

Excel 如何使用指定的源值动态创建新文本框?,excel,vba,textbox,userform,Excel,Vba,Textbox,Userform,我有一个userform,它允许用户在三个文本框中输入信息以进行登录删除。这些数据输入到它后面的excel表格中。我想这样做,在用户将数据输入第一个框后,它将创建另外3个框。这种模式会重复 第一个框被指定为“删除登录名!”!A2 目前,我一直在尝试这样做,但没有任何效果 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Left(Target.Address, 2) Case Is = "$A"

我有一个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

前三个框已正确分配,但没有创建新的文本框。

正在创建文本框,但我没有正确放置它们。他们基本上是一个接一个地堆在一起

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
Private子工作表\u更改(ByVal目标作为范围)
选择案例左侧(Target.Address,2)
Case Is=“$A”
'如果目标.Value为“”,则
'如果UserForm1为空,则
作为控件的Dim cCntrl
作为整数的Dim i
对于i=0到2
设置cCntrl=UserForm1.Frame10.Controls.Add(“Forms.TextBox.1”、“Login”&i&Target.Row+1,True)
与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
以
下一个
"完"
结束选择
端接头