2014-09-04 50 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