Здравствуйте! подскажите что не так. есть форма которая вызывается при выборе ячейки в столбце "B", в форме два textbox в которых выводятся два значения: выбранной ячейки и ячейки справа от выбранной. форма со значением ShowModal = False. как сделать чтобы меняя выбор ячеек на листе в форме также сразу менялись значения textbox`ов.
вот код запуска формы(в модуле листа): Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Target.Row < 3 Then Exit Sub If Target.Cells.Count > 2 Then Exit Sub If Len(Trim(Target.Value)) = 0 Then End If UserForm1.Show End Sub
и код в форме: Private Sub UserForm_Initialize() Me.TextBox1 = ActiveCell.Value Me.TextBox2 = ActiveCell.Offset(, 1).Value End Sub
Здравствуйте! подскажите что не так. есть форма которая вызывается при выборе ячейки в столбце "B", в форме два textbox в которых выводятся два значения: выбранной ячейки и ячейки справа от выбранной. форма со значением ShowModal = False. как сделать чтобы меняя выбор ячеек на листе в форме также сразу менялись значения textbox`ов.
вот код запуска формы(в модуле листа): Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Target.Row < 3 Then Exit Sub If Target.Cells.Count > 2 Then Exit Sub If Len(Trim(Target.Value)) = 0 Then End If UserForm1.Show End Sub
и код в форме: Private Sub UserForm_Initialize() Me.TextBox1 = ActiveCell.Value Me.TextBox2 = ActiveCell.Offset(, 1).Value End SubAKSENOV048
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Target.Row < 3 Then Exit Sub If Target.Cells.Count > 2 Then Exit Sub l = Len(Trim(Target.Value)) If Len(Trim(Target.Value)) = 0 Then End If UserForm1.TextBox1 = ActiveCell.Value UserForm1.TextBox2 = ActiveCell.Offset(, 1).Value UserForm1.Show End Sub
Чтобы не преписывать, можно так:
Code
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Target.Row < 3 Then Exit Sub If Target.Cells.Count > 1 Then Exit Sub If Len(Trim(Target.Value)) = 0 Then Exit Sub Unload UserForm1 UserForm1.Show End Sub
Можно так:
Code
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Target.Row < 3 Then Exit Sub If Target.Cells.Count > 2 Then Exit Sub l = Len(Trim(Target.Value)) If Len(Trim(Target.Value)) = 0 Then End If UserForm1.TextBox1 = ActiveCell.Value UserForm1.TextBox2 = ActiveCell.Offset(, 1).Value UserForm1.Show End Sub
Чтобы не преписывать, можно так:
Code
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub If Target.Row < 3 Then Exit Sub If Target.Cells.Count > 1 Then Exit Sub If Len(Trim(Target.Value)) = 0 Then Exit Sub Unload UserForm1 UserForm1.Show End Sub
Вариантов есть. Только отображение формы и изменение текстбоксов желательно поместить в разные события, иначе форма дергается. Вот примерчик: двойной клик в ячейках показывает форму, изменение выделения изменяет текстбоксы.
Quote (AKSENOV048)
а нет еще вариантов?
Вариантов есть. Только отображение формы и изменение текстбоксов желательно поместить в разные события, иначе форма дергается. Вот примерчик: двойной клик в ячейках показывает форму, изменение выделения изменяет текстбоксы.nilem
_Boroda_, nilem, спасибо! я уже переписал первый вариант, не очень много на самом деле надо было переписать, всего около 60 строк! Спасибо большое за помощь! как все таки можно сделать чтобы фокус не переводился на форму? (чтобы можно было скролить лист) пока писал, проверил еще раз первый вариант, оказывается не все переписал, оставлю наверно вариант с Unload и Show!
_Boroda_, nilem, спасибо! я уже переписал первый вариант, не очень много на самом деле надо было переписать, всего около 60 строк! Спасибо большое за помощь! как все таки можно сделать чтобы фокус не переводился на форму? (чтобы можно было скролить лист) пока писал, проверил еще раз первый вариант, оказывается не все переписал, оставлю наверно вариант с Unload и Show!AKSENOV048