Vba Excel动态下拉列表转到单元格

Vba Excel动态下拉列表转到单元格,vba,excel,excel-2013,Vba,Excel,Excel 2013,我目前有一个与数据验证下拉列表一起工作的代码。我想知道的是,无论如何都有办法使这个列表变得动态,这样我在列表中输入的任何内容都会变成它所要从中提取的内容,而不必手动输入每个内容 当前编辑如下 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Range("B1").Value Case Is = "G&A Total" Application.Goto Range("G

我目前有一个与数据验证下拉列表一起工作的代码。我想知道的是,无论如何都有办法使这个列表变得动态,这样我在列表中输入的任何内容都会变成它所要从中提取的内容,而不必手动输入每个内容

当前编辑如下

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
然后有两个范围命名列,我可以更新它们以避免经常更改代码?

基本上,将每个列与
B1中的值进行比较

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

我不确定我是否完全理解您的问题,但您可以为列表创建一个范围名称,例如,
部门
,并将
=部门
放在“源”下。这样,每次更新范围名称时,列表都会更新。这正是我想要的,所以这会获取B1,这是数据验证,然后将大小写设置为所选名称。然后它转到所选的名称。有没有办法在第二栏写下该去哪里。这样一来,我的G&A总范围就被简单地命名为G.A
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