Всем привет! Лист "Титульный" в приложенном файле, Ячейки В5 и ниже. При активации появляется текстбох, затем, по мере ввода - листбокс со списком. Не могу понять, почему листбокс не реагирует на выбор. Иногда срабатывает на выбор первого сверху значения, и потом "засыпает".
зы. Работаю в 2016, думал, может что из-за него... специально сохранил в 2003, открыл файл на другом компе в 2003 - тоже самое...
Что не так? До этого всегда этот вариант работал...
Всем привет! Лист "Титульный" в приложенном файле, Ячейки В5 и ниже. При активации появляется текстбох, затем, по мере ввода - листбокс со списком. Не могу понять, почему листбокс не реагирует на выбор. Иногда срабатывает на выбор первого сверху значения, и потом "засыпает".
зы. Работаю в 2016, думал, может что из-за него... специально сохранил в 2003, открыл файл на другом компе в 2003 - тоже самое...
Что не так? До этого всегда этот вариант работал...Michael_S
Доброе время суток У меня получилось, что это происходит из-за закрепления областей. Если его убрать или по щёлкнуть хоть на один шаг прокрутку окна листа, то ListBox становится доступным.
Доброе время суток У меня получилось, что это происходит из-за закрепления областей. Если его убрать или по щёлкнуть хоть на один шаг прокрутку окна листа, то ListBox становится доступным.anvg
У себя я обходил так: снять закрепление областей показать листбокс после выделения другой ячейки - закрепить обратно. на Вашем примере так:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Cells.Count > 1 Then Exit Sub If ActiveCell.Row <= 5 Then Me.TextBox1.Visible = False: Me.ListBox1.Visible = False: Exit Sub ArrComplete If ActiveCell.Column = 2 Then ActiveWindow.FreezePanes = False With Me.TextBox1 .Top = ActiveCell.Top: .Left = ActiveCell.Left .Width = ActiveCell.Width .Height = 20 .Activate .Text = ActiveCell.Value: .Visible = True End With With Me.ListBox1 .Clear .Visible = False .Top = ActiveCell.Top + Me.TextBox1.Height + 2 .Width = ActiveCell.Width .Left = ActiveCell.Left .Height = 150 End With Else If ActiveWindow.FreezePanes = False Then Application.EnableEvents = False Range("c5").Select ActiveWindow.FreezePanes = True Target.Select Application.EnableEvents = True End If Me.TextBox1.Visible = False Me.ListBox1.Visible = False End If End Sub
У себя я обходил так: снять закрепление областей показать листбокс после выделения другой ячейки - закрепить обратно. на Вашем примере так:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Cells.Count > 1 Then Exit Sub If ActiveCell.Row <= 5 Then Me.TextBox1.Visible = False: Me.ListBox1.Visible = False: Exit Sub ArrComplete If ActiveCell.Column = 2 Then ActiveWindow.FreezePanes = False With Me.TextBox1 .Top = ActiveCell.Top: .Left = ActiveCell.Left .Width = ActiveCell.Width .Height = 20 .Activate .Text = ActiveCell.Value: .Visible = True End With With Me.ListBox1 .Clear .Visible = False .Top = ActiveCell.Top + Me.TextBox1.Height + 2 .Width = ActiveCell.Width .Left = ActiveCell.Left .Height = 150 End With Else If ActiveWindow.FreezePanes = False Then Application.EnableEvents = False Range("c5").Select ActiveWindow.FreezePanes = True Target.Select Application.EnableEvents = True End If Me.TextBox1.Visible = False Me.ListBox1.Visible = False End If End Sub
не учел один нюанс - у меня был листбокс только вверху страницы - а у Вас по всей колонке... получается не очень.
Нормально получается. Если так:
[vba]
Код
Private Sub ListBox1_Click() With Me.ListBox1 ActiveCell.Value = .Value ' Me.TextBox1.Text = .Value Me.TextBox1.Visible = False: .Visible = False End With
не учел один нюанс - у меня был листбокс только вверху страницы - а у Вас по всей колонке... получается не очень.
Нормально получается. Если так:
[vba]
Код
Private Sub ListBox1_Click() With Me.ListBox1 ActiveCell.Value = .Value ' Me.TextBox1.Text = .Value Me.TextBox1.Visible = False: .Visible = False End With
Да, смотрел, практически одно и тоже. Но у меня 2016, а в нем слишком много визуальных эффектов, может из-за этого. Все равно - спасибо! И SLAVICK, тоже спасибо!
Да, смотрел, практически одно и тоже. Но у меня 2016, а в нем слишком много визуальных эффектов, может из-за этого. Все равно - спасибо! И SLAVICK, тоже спасибо!Michael_S