基于更改单元格值(VBA)的超链接和自动筛选表

时间:2016-11-17 22:41:48

标签: excel vba

我要做的是在Sheet1上创建一个超链接,自动过滤Sheet2上的表。此表应根据Sheet1中的某个单元格值进行过滤。单元格值根据切片器选择动态变化。

例如,

  1. 如果Sheet1上的单元格值显示"唐纳德特朗普",则Sheet2上的表格应过滤为仅显示"唐纳德特朗普"第13栏。
  2. 如果Sheet2上的单元格值显示" Hilary Clinton",则Sheet2上的表格应过滤为仅显示" Hilary Clinton"第13栏。依此类推......
  3. 我对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 个答案:

答案 0 :(得分:1)

  1. 希拉里克林顿用双l拼写。 (但这不是导致问题的原因)
  2. Worksheet_BeforeDoubleClick是一个事件处理程序,无论何时双击某个地方都会调用它,除了Worksheet_FollowHyperlink之外你不需要这个。
  3. ActiveSheet.Range(" S18")。选择意味着点击Cell S18;它没有返回值,因此您无法将其与1进行比较。
  4. 你真的不需要一个宏。我的意思是使用宏有一些缺点:对fileformat等的要求。这个任务可以通过设置基于公式的过滤器(使用隐藏列或条件格式)并添加一个简单地针对总统表上的单元格的链接来完成。片材。
  5. <强>更新

    回复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