2013-11-11 5 views
0

У меня есть пользовательская форма, которая позволяет пользователям вводить информацию в три текстовые поля для удаления имени пользователя. Эти данные попадают в лист 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

Текстовые поля создавались, но я не размещал их правильно. Они по существу складывались друг за другом.

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 
Смежные вопросы