2016-09-22 6 views
1

Я пытаюсь использовать событие рабочего листа с двойным щелчком, чтобы заполнить текстовое поле в форме со значением из определенного столбца в строке с двойным щелчком.Дважды щелкните событие, чтобы заполнить текстовое поле в форме

например.

У меня есть четыре колонки

ID Name Age Gender 
1 A  24 M 
2 B  26 F 
3 C  22 F 
4 D  30 M 

Когда я дважды нажать на любую ячейку в столбце Name, форма с текстового поля будет всплывающее окно с текстовым полем заполняется значением из столбца Gender в строке который был дважды щелкнул. SO, когда я дважды нажимаю «B» в столбце «Имя», должна появиться форма с текстовым полем «F».

это мой код до сих пор

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, CANCEL As Boolean) 
    CANCEL = True 
    If Target.Column = 2 Then 
     Update.Show 
     With Update.TextBox1.value = ????? 
     End With 
    End If 
End Sub 
+0

Вы ищете 'Target .Value' для вашего «?????», но вам либо нужна эта строка * до *, вы показываете UserForm или имеете форму open modeless. Также см. [Рекомендации по документации для пользовательских форм] (http://stackoverflow.com/documentation/vba/5351/user-forms/19036/best-practices#t=201609221422259238642). – Comintern

+0

Это не сработало и, как и обычно, target.value заполнит текстовое поле двойным щелчком. Я хочу, чтобы он заполнил значение из определенного столбца в ячейке с двойным щелчком. – Danny

+0

Извините, это будет 'Target.Offset (0, x) .Value', где' x' - количество столбцов справа. – Comintern

ответ

2

Используя форму, которая называется frm_Update с тремя соответствующим названием управления текстового поля.
Это будет принимать значение от Target строки, столбцы 2, 3 и 4 и поместить значения в текстовых полях:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 

    Dim oForm As frm_Update 

    If Target.Column = 2 Then 
     Set oForm = New frm_Update 

     Cancel = True 
     With oForm 
      .txtName = Cells(Target.Row, 2) 
      .txtAge = Cells(Target.Row, 3) 
      .txtGender = Cells(Target.Row, 4) 
      .Show 
     End With 
    End If 

End Sub 

@Comintern - Я буду иметь хорошее чтение этой ссылки. Все, что мне действительно нужно практиковать.

+0

Я еще не пробовал ваш код, но спасибо, что нашли время ... – Danny

0

Я использовал двойное событие щелчка, чтобы открыть событие формы & формы реактивировать, чтобы получить значение из столбца в строке активной ячейки

поэтому его в основном

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, CANCEL As Boolean) 
    CANCEL = True 
    If Target.Column = 2 Then Exit Sub 
    Update.Show 
End Sub 

Private Sub UserForm_Activate() 
Dim r As Long 

    r = ActiveCell.Row 

    Me.TextBox1.value = Cells(r, 4).value 
Смежные вопросы