Динамический выпадающий список Excel перейти в ячейку

Private Sub Worksheet_Change(ByVal Target As Range)

    Select Case Range("B1").Value
        Case Is = "G&A Total"
        Application.Goto Range("G_A_Total"), Scroll:=True

        Case Is = "Accounting"
        Application.Goto Range("Accounting"), Scroll:=True

        Case Is = "Environmental"
        Application.Goto Range("Environmental"), Scroll:=True

        Case Is = "GSC"
        Application.Goto Range("GSC"), Scroll:=True

        Case Is = "Human Resources"
        Application.Goto Range("Human_Resources"), Scroll:=True

    End Select

End Sub

В настоящее время у меня есть этот код, который работает с раскрывающимся списком проверки данных. Что я хочу знать, так это сделать это динамическим, чтобы все, что я добавляю в список, становилось тем, из чего оно извлекается, вместо того, чтобы вводить каждое вручную.

Текущие правки ниже.

Private Sub Worksheet_Change(ByVal Target As Range)

    Select Case Range("B1").Value
        Case Is = Range("A1")
        Application.Goto Range("G_A_Total"), Scroll:=True

        Case Is = Range("A2")
        Application.Goto Range("Accounting"), Scroll:=True

        Case Is = Range("A3")
        Application.Goto Range("Environmental"), Scroll:=True

        Case Is = Range("A4")
        Application.Goto Range("GSC"), Scroll:=True

        Case Is = Range("A5")
        Application.Goto Range("Human_Resources"), Scroll:=True
    End Select

End Sub

Я изменил конкретный случай. Должны ли быть ссылки на ячейки, которые ссылаются на ячейки, выбранные проверкой данных, вместо ссылки на каждую отдельную ячейку. Есть ли способ назвать их диапазоном, а затем ссылаться на имя диапазона?

Может быть, что-то вроде этого

    Select Case Range("B1").Value
            Case Is = Range("Departments")
            Application.Goto Range("DepartmentsGoTo"), Scroll:=True                
        End Select

Тогда есть 2 именованных столбца с диапазоном, которые я могу обновить, чтобы избежать частого изменения кода?


person Michael Downey    schedule 04.09.2014    source источник
comment
Я не уверен, правильно ли я понимаю ваш вопрос, но вы можете указать имя диапазона для списка, скажем, Departments и поставить =Departments в разделе «Источник». Таким образом, каждый раз, когда вы обновляете имя диапазона, список обновляется.   -  person Matt Cremeens    schedule 04.09.2014


Ответы (1)


По сути, сравните каждый именованный диапазон. со значением в B1

Private Sub Worksheet_Change(ByVal Target As Range)

For Each myName In ActiveWorkbook.Names    
    Select Case Range("B1").Value
      Case myName.Name
        Application.Goto Reference:=myName.Name, Scroll:=True
     End Select
Next

End Sub
person Ravi Yenugu    schedule 04.09.2014
comment
Это именно то, что я хотел - person Michael Downey; 04.09.2014
comment
Итак, это захватывает B1, который является проверкой данных, а затем устанавливает регистр для выбранного имени. Затем он переходит к выбранному имени. Есть ли способ иметь вторую колонку, куда идти. Таким образом, диапазон I G & A Total назывался просто G.A. - person Michael Downey; 04.09.2014