2016-11-17 76 views
0

我正在嘗試的是在Sheet1上創建一個自動篩選Sheet2上的表的超鏈接。此表應根據Sheet1中的某個單元格值進行過濾。單元格值根據切片器選擇動態更改。基於更改單元格值(VBA)的超鏈接和自動篩選表

因此,舉例來說,

  1. 如果Sheet 1上顯示電池值「特朗普」,然後Sheet 2上表應該過濾如果細胞在塔13
  2. 以僅顯示「特朗普」在Sheet2上的值顯示「Hilary Clinton」,那麼Sheet2上的表應該過濾以在第13列中僅顯示「Hilary Clinton」。等等等等等等...

我對VBA非常不熟悉我希望得到一些幫助。

這是我到目前爲止,但是當我嘗試點擊超鏈接時沒有任何反應。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
If ActiveSheet.Range("S18").Select = 1 Then 
    'This is the cell with the hyerlink in it. 
Worksheets("Table of Presidents").ListObjects("Table17").Range.AutoFilter Field:=13, Criteria1:=Worksheets("Dashboard").Range("S21").Value 
'This is the table that needs to be filtered. 
'The criteria1 part is the field that dynamically changes 
Worksheets("Table of Presidents").Activate 
End If 
End Sub 

回答

1
  1. 希拉里拼寫雙升。 (但這不是導致此問題的原因)
  2. Worksheet_BeforeDoubleClick是一個事件處理程序,無論何時雙擊某處,都可以調用該事件處理程序,但不需要此操作,但需要Worksheet_FollowHyperlink。
  3. ActiveSheet.Range(「S18」)。選擇意味着像點擊單元格S18;它沒有返回值,所以你不能將它與1進行比較。
  4. 你並不需要一個宏。我的意思是使用宏有一些缺點:對fileformat的要求等。這個任務可以通過基於公式設置過濾器(使用隱藏列或條件格式)並添加一個簡單地將目標定位到總統表上的單元格的鏈接片。

更新

重新2-3:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    If Target.Type = msoHyperlinkRange And Target.Range.Address = "$S$18" Then 
     Worksheets("Table of Presidents").ListObjects("Table17").Range.AutoFilter Field:=13, Criteria1:=Worksheets("Dashboard").Range("S21").Value 
     Worksheets("Table of Presidents").Activate 
    End If 
End Sub 
+0

感謝您的評論。當我運行代碼時,它會顯示「編譯錯誤:End With With With」 – Darren

+0

好的,我將End With更改爲End If。不知道我是否應該。無論哪種方式,它似乎沒有工作。該超鏈接將我帶到Sheet2,但表格未被過濾。 – Darren

+0

你是對的,這是結束如果。在第一行設置一個斷點(如果目標...),然後讓我們看看它是否被調用。 – z32a7ul

相關問題