【问题标题】:Excel VBA, Slicer - How to select 1 item out of a thousand items in excel slicer using vba?Excel VBA,切片器 - 如何使用 vba 从 excel 切片器中的一千个项目中选择一项?
【发布时间】:2018-09-24 03:58:24
【问题描述】:

假设我们有一个包含 1000 多个项目的切片器,并且它每天都在增长。我正在寻找一种解决方案,我只能从一千个项目中选择一项,而无需滚动并找到我想要的项目。我认为这就像一个切换开关,您可以在其中打开/关闭特定项目。当您打开时 - 仅选择该项目;当您关闭时 - 切片器过滤器被清除。

我试图记录宏,但它将是一千行代码,其中切片器项目被触发为 True 或 False,鉴于列表每天都在增长,我认为这不会起作用。

感谢您的支持!

托尼

【问题讨论】:

  • 嗨 urdearboy,输入框可能会起作用,但之后的宏是我还没弄清楚的地方。例如:你有一个切片器,它有 26 个项目代表字母表中的 26 个字母,你想选择B,所以输入“B”,但宏会像 SlicerItem 一样运行,因为“B”=True,剩下的 25 个将是 False。如果我的列表超过 26 个,这种方式将不起作用。
  • 嗨 urdearboy,好主意,我们可以使用月份切片器,它不会增长超过 12 个月。我的项目将是 12 个月,“无预测”还有 1 个月。您对此解决方案的宏有什么建议?如果其中一项尚不存在怎么办?
  • 你好,亲爱的男孩,好的!假设您有一个切片器,其中包含 12 个月的 12 个项目和另一个“无预测”项目。宏将用作仅选择“无预测”或其他 12 个月的切换。鉴于在 12 个月中,4 月没有预测,但宏观仍应涵盖 4 月以供将来使用。

标签: excel vba slicers


【解决方案1】:

下面的代码可能有用,你也可以举个例子。

Sub TestFilter()
    Const FilterCol1 = 4 '........... Your target column
    Const Criteria1 = "something" '.. Your target value
    Dim LastRow As Integer
    Dim LastCol As String

    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0

    With ActiveSheet
        LastRow = .Range("A" & .Rows.Count).End(xlUp).row
        LastCol = Split(.Range("A1").End(xlToRight).Address, "$")(1)
        .Range("A1" & ":" & LastCol & LastRow).AutoFilter field:=FilterCol1, Criteria1:=Criteria1
    End With
End Sub

【讨论】:

  • 我在这里没有看到切片器控件
  • 可以提供图片吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 2019-07-30
  • 1970-01-01
相关资源
最近更新 更多