VBA - test if a value is a valid selection for a PivotField

后端 未结 2 830
自闭症患者
自闭症患者 2021-01-22 00:24

For a pivot table (pt1) on Sheet1, I use VBA to change the value of a filter field (filterfield) using the code below. Let\'s say values for field can be A, B or C



        
相关标签:
2条回答
  • 2021-01-22 00:34

    You can iterate through the PivotItems and check the Name against your test.

    Sub CheckIfPivotFieldContainsItem()
    
        Dim pt As PivotTable
        Set pt = Sheet1.PivotTables(1)
    
        Dim test_val As Variant
        test_val = "59"
    
        Dim pivot_item As PivotItem
        For Each pivot_item In pt.PivotFields("C").PivotItems
            If pivot_item.Name = test_val Then
                Debug.Print "MATCHES"
            End If
        Next pi
    
    End Sub
    

    Relevant data shows that a match should exist and indeed it returns MATCHES.

    pivot data

    0 讨论(0)
  • 2021-01-22 00:49

    If you want to have a helper function and do this without looping values you may use visual basic OnErrorResumeNext trick.

    Private Function hasPivotItem(pField As PivotField, value As String) As Boolean
        On Error Resume Next
        hasPivotItem = Not IsNull(pField.PivotItems(value))
        On Error GoTo 0
    End Function
    
    ' somewhere in your vba program
    Debug.Print hasPivotItem(ptTable.PivotFields("Level"), "1")
    Debug.Print hasPivotItem(ptTable.PivotFields("Level"), "-123")
    
    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题