2014-09-04 23 views
1
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 

我目前有这个代码与数据验证下拉菜单一起使用。我想知道的是,无论如何要做到这一点,以便我放入列表中的任何内容都变成了它从中拉取的内容,而不必手动输入每个内容。Excel动态下拉菜单转到单元格

当前编辑如下。

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个远程指定的列,我可以更新,以避免经常改变的代码?

+0

我不知道如果我正好理解你的问题,但你可以在列表中进行了一系列的名字,说,'Departments'并把' =“来源”下的部门。这样每次更新范围名称时,列表都会更新。 – 2014-09-04 19:04:46

回答

1

基本上与值比较每个Named rangeB1

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 
+0

那正是我想要的 – 2014-09-04 19:17:27

+0

因此,这个数据验证的B1会将案例设置为所选的名称。然后它转到选择的名称。有没有办法让第二列去哪里。那样,我的G&A Total的名字简直就是G.A – 2014-09-04 19:45:38