微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Excel 基于切片器选择隐藏/取消隐藏文本框

如何解决Excel 基于切片器选择隐藏/取消隐藏文本框

我正在尝试根据数据透视表切片器上选择的内容隐藏/取消隐藏多个文本框;

如果选择了 UK 则显示 TextBox 21 但隐藏 TextBox 22 和 TextBox 23 如果选择了 DE,则显示 TextBox 22 但隐藏 TextBox 21 和 TextBox 23 如果选择了 FR,则显示 TextBox 23 但隐藏 TextBox 21 和 TextBox 22

我尝试录制一个宏来获取对象的命名约定,然后编写了下面的 VBA 代码,但它不起作用。谁能告诉我哪里出错了(我使用的是 Excel 2019);

Sub ChangetextBox()
    If ActiveWorkbook.SlicerItems("UK").Selected = True Then
            ActiveSheet.Shapes.Range(Array("TextBox 21")).Visible = msoTrue
            ActiveSheet.Shapes.Range(Array("TextBox 22")).Visible = msoFalse
            ActiveSheet.Shapes.Range(Array("TextBox 23")).Visible = msoFalse
    If ActiveWorkbook.SlicerItems("DE").Selected = True Then
            ActiveSheet.Shapes.Range(Array("TextBox 21")).Visible = msoFalse
            ActiveSheet.Shapes.Range(Array("TextBox 22")).Visible = msoTrue
            ActiveSheet.Shapes.Range(Array("TextBox 23")).Visible = msoFalse
    If ActiveWorkbook.SlicerItems("FR").Selected = True Then
            ActiveSheet.Shapes.Range(Array("TextBox 21")).Visible = msoFalse
            ActiveSheet.Shapes.Range(Array("TextBox 22")).Visible = msoFalse
            ActiveSheet.Shapes.Range(Array("TextBox 23")).Visible = msoTrue
    End If
End Sub

任何帮助将不胜感激。 谢谢

解决方法

尝试这样的事情:

Sub Changetextbox()
    
    Dim si As SlicerItems,ws As Worksheet
    
    Set ws = ActiveSheet
    Set si = ActiveWorkbook.SlicerCaches("Slicer_ColA").SlicerItems ' edit to your slicer name
    
    ws.Shapes("TextBox 21").Visible = si("UK").Selected
    ws.Shapes("TextBox 22").Visible = si("FR").Selected
    ws.Shapes("TextBox 23").Visible = si("DE").Selected
    
End Sub

编辑:您可能需要检查切片器缓存的名称:

For Each sc In ActiveWorkbook.SlicerCaches
    Debug.Print sc.Name
Next sc

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。