VBA从切片器中选择多个值

时间:2018-12-12 23:06:43

标签: excel vba excel-vba contains slicers

我有一个带有切片器的数据透视表。限幅器中有50多个值,这些值可以更改。我使用切片器过滤数据-我一直在寻找相同的5个值,而我的5个值以相同的文本字符串开头。
我已经录制了一个宏来选择5个值。此宏选择为true的项目,然后列出所有其他值,并将选择设置为false。 当添加新值时,宏崩溃,因为我没有明确的代码行将新值的选择设置为false。 我找到了从切片器中选择一个值并取消选择所有其他值而不必显式列出所有值的代码,但是我找不到找到5个值并取消选择所有其他值而不必显式列出它们的代码,或者 一种修改此代码以选择“包含”一致文本字符串的所有切片器项目的方法。两者都会帮助...

这是我必须找到一个特定值的代码,但是在不显式说明它们的情况下取消选择其余部分:

For Each slcCache In ActiveWorkbook.SlicerCaches
        slcCache.ClearManualFilter
Next

With ActiveWorkbook.SlicerCaches("Slicer_Fruit")
    For Each oSlicerItem In .SlicerItems
        If oSlicerItem.Name = "abcx Apple" Then
            oSlicerItem.Selected = True
        Else
            oSlicerItem.Selected = False
        End If
    Next oSlicerItem
End With

如何更改代码以选择以“ abcx”开头或包含此文本的切片器项目? 还是可以选择“ abcx苹果”,“ abcx梨”和“ abcx香蕉”,但不能选择其他任何值?

1 个答案:

答案 0 :(得分:1)

尝试一下:

// See code in original post

JFSF controller(&joystick, !DO_AUTO_SEND_STATE);

JFSF_PRIV::SwitchContinuousAction btnOne(&joystick, 10, 0);
JFSF_PRIV::SwitchContinuousAction btnTwo(&joystick, 9, 1);

void setup() {
  joystick.begin(DO_AUTO_SEND_STATE);
  //  controller.addSwitchContinuous(10, 0);  // Pin 10; btn index 0
  //  controller.addSwitchContinuous(9, 1);   // Pin 9 ; btn index 1 
  controller.addAction(&btnOne);
  controller.addAction(&btnTwo);
}
// loop() is unchanged