Я уверен, что каждый, кто прочитает заголовок, скажет: «О нет, только не снова». Но прежде чем опубликовать это, я прочитал около 7-8 предыдущих вопросов с похожим заголовком, и ни один из них, похоже, не работал. Итак, это сделка:
Моя книга использует событие Workbook_Open
для отображения пользовательской формы:
Sub Workbook_Open()
UserForm1.Show
End Sub
Userform1
включает текстовое поле и список. Поле списка заполняется данными динамически в соответствии с вводом пользователем в текстовое поле. Пока все в порядке.
Когда пользователь щелкает значение внутри списка, я хочу, чтобы была выбрана конкретная ячейка. Итак, я использовал это:
Private Sub ListBox1_Click()
Dim Cell As Range
With ThisWorkbook.Worksheets(1)
Set Cell = .Range("C3", .Cells(.Rows.Count, 3).End(xlUp)).Find(UserForm1.ListBox1.Text, LookIn:=xlValues)
.Range(Cell, Cell.Offset(0, 2)).Select
End With
End Sub
Но, как и многие другие до меня, я не могу заставить Select
работать должным образом, и этот код выдал ошибку, как в заголовке.
Я пробовал несколько вещей, чтобы заставить этот код работать.
-Пробовал Application.GoTo
, используя его вместо Select
, как кто-то предложил.
- Попытался переместить код события ListBox1_Click
в подпрограмму внутри стандартного модуля и вызвать эту подпрограмму с событием ListBox1_Click
.
- Пытался сначала выбрать рабочий лист, как предлагали другие.
-Пробовал Worksheets(1).Visible = True
, как предложил кто-то другой.
-Попытался сначала активировать главное окно приложения с помощью AppActivate Application.Caption
.
-Попытался перейти к нужной ячейке вместо выбора:
Private Sub ListBox1_Click()
Dim foundRow As Integer
With ThisWorkbook.Worksheets(1)
foundRow = .Range("C3", .Cells(.Rows.Count, 3).End(xlUp)).Find(UserForm1.ListBox1.Text, LookIn:=xlValues).Row
End With
ActiveWindow.ScrollRow = foundRow - 1
End Sub
Я также пробовал другие менее важные изменения, но я застрял с этим. Самое смешное, что перед использованием события Workbook_Open
у меня было UserForm1
, показанное с помощью макроса, назначенного кнопке/форме на листе, и тогда все работало нормально.
Кто-нибудь знает, как заставить Select
работать в моем случае?
С другой стороны, хорошо известно, что Select
вызывает много проблем, поэтому я не зацикливаюсь на этом. Если у кого-то есть другой способ получить тот же результат, я весь внимание.