2016-12-01 6 views
0

私はExcelとVBAで作業していましたが、私のスライサーからさまざまなフィールドを選択解除する方法を見つけようとしています。 私はスライサーキャッシュを読み込み、スライサー内のさまざまな項目を繰り返してみます。スライサー内のアイテムの値を読み取ることはできますが、選択を解除することはできません。それはエラーコード1004で "アプリケーション定義またはオブジェクト定義のエラー"をスローアップし続けます。VBA Slicerの選択したプロパティ値をFalseに設定できません

私は困難に直面しているコードスニペットを共有しています。上記のコードで

Sub SelectFiscalWeeks() 

Dim slcCache As SlicerCache 
Dim slcItem As SlicerItem 

FalseVar = False 
Application.StatusBar = "Filtering out last 13 Week's Data" 

Set slcCache = ThisWorkbook.SlicerCaches("Slicer_Date.Fiscal_Week") 

slcCache.ClearManualFilter 

For Index = 1 To slcCache.SlicerCacheLevels.Count 
    Worksheets("A").Cells(Index + 1, "N").Value = Index 

    j = 0 
    For Each slcItem In slcCache.SlicerCacheLevels(Index).SlicerItems 
     Worksheets("A").Cells(j + 1, "P").Value = slcItem.Name 
     j = j + 1 
     slcItem.Selected = FalseVar 
    Next 
Next 

'Set slcCache.VisibleSlicerItems = Array("[DT].[FW].&[201701]") 

Set slcCache = Nothing 
Application.StatusBar = False 

End Sub 

私はslcItem.Nameを使用してスライサー項目名を読み取ることができるが、私は次の文のいずれかを実行することができません:これらの文を実行する

slcItem.Selected = FalseVar 
Set slcCache.VisibleSlicerItems = Array("[DT].[FW].&[201701]") 

アップスローエラーコード "10000"でエラー "アプリケーション定義またはオブジェクト定義エラー"が発生しました。

私は1時間以上デバッグを試みていますが、原因を特定できません。基本的なものかもしれませんが、私のコードに何が間違っているのかを教えてください。

答えて

2

さて、あなたと同じ問題で数時間デバッグしています。 最後に、.selectedをtrue/falseに設定する代わりにVisibleSlicerItemsを使用する必要があることがわかりました。

セットなしのslcCache.VisibleSlicerItems = Array( "[DT]。[FW]。& [201701]")を試してください。

例として私のコードです。 希望はあなたを助けることができます。

Option Explicit 

Sub Test() 
Dim sc As SlicerCache 
Dim si As SlicerItem 
Dim list As Variant 


Set sc = ActiveWorkbook.SlicerCaches("Slicer_product_name") 

    For Each si In sc.SlicerCacheLevels(1).SlicerItems 
     If InStr(si.Value, "Boxers") > 0 Then 
      'this if loop creates an Array for VisibleSlicerItems 
      If IsEmpty(list) Then 
       list = Array(si.Name) 
      Else 
       ReDim Preserve list(UBound(list) + 1) 
       list(UBound(list)) = si.Name 
      End If 
     End If 
    Next 

sc.VisibleSlicerItemsList = list 

End Sub 
関連する問題