Как перейти к определенной ячейке на основе выбора списка - PullRequest
0 голосов
/ 13 июня 2019

Я создал раскрывающийся список в ячейке R5, содержащий имена, давайте назовем их Name1 Name2 Name3.Мне бы хотелось, чтобы пользователь выбирал определенное имя, а лист прокручивался до определенной строки.Например, если выбрано Имя 1, я бы хотел, чтобы оно перешло к строке 2, если выбрано Имя2, строка 10, и Имя3, строка 18. Список находится на том же рабочем листе, что и данные, к которым я хочу прокрутить.Есть ли какой-нибудь код, который я могу использовать для этого?

Ответы [ 3 ]

1 голос
/ 13 июня 2019

Вы должны использовать Sheet Events, чтобы справиться с этим. Примерно так:

В модуле рабочего листа рабочего листа, в котором указан диапазон ввода, введите этот код

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim InputRange As Excel.Range
    Set InputRange = Me.Range("R5")

    '// Check if the change is happening in your dropdown cell
    If Not Intersect(Target, InputRange) Is Nothing Then
        Select Case InputRange.Value
            Case "Name1"
                Application.ActiveWindow.ScrollRow = 2
            Case "Name2"
                Application.ActiveWindow.ScrollRow = 10
            Case "Name3"
                Application.ActiveWindow.ScrollRow = 18
            Case Else
                '//...
        End Select
    End If
End Sub

Edit:

Если у вас проблемы с тем, чтобы заставить это работать. Попробуйте добавить точку останова, щелкнув в области слева от кода. Точка останова остановит выполнение, когда поток кода достигнет этой точки. Это один из способов выяснить, пытается ли Excel даже запустить этот блок кода.

enter image description here

Отладка кода Excel

1 голос
/ 13 июня 2019

Допустим, мы поместили небольшую таблицу переходов в столбцы S и T , например:

enter image description here

Номера строк указаны в столбце T .Мы помещаем раскрывающийся список в R5 и следующий код в области кода рабочего листа:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R5 As Range, v As String, r As Range
    Set R5 = Range("R5")
    If Intersect(Target, R5) Is Nothing Then Exit Sub
    v = R5.Value
    Set r = Range("S:S").Find(what:=v, After:=Range("S1"))
    Application.Goto Range("A" & r.Offset(0, 1).Value)
End Sub

Всякий раз, когда пользователь выбирает новое имя в ячейке R5 ,код перейдет к строке, указанной в столбце T .

Поскольку это код рабочей таблицы, очень просто установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите Просмотр кода - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробном листе.

Если вы сохраните книгу, макрос будет сохранен вместе с ней.Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

В удалить макрос:

  1. откройте окна VBE, как указано выше
  2. удалите код
  3. закройте окно VBE

Чтобы узнать больше о макросах в целом, см .:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

и

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Подробнее о макросах событий (код таблицы) см.

http://www.mvps.org/dmcritchie/excel/event.htm

Для работы должны быть включены макросы!

0 голосов
/ 13 июня 2019

Нажмите клавишу TAB на клавиатуре.Это может сработать.Просто попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...