簡體   English   中英

根據單元格值選擇多個切片器項目

[英]Selecting multiple slicer items based on a cell value

我需要一個VBA代碼,該代碼能夠根據單元格值選擇多個切片器項目。 這是用於制作每周報告,因此目標單元格為C17,其格式為“ YYYYWW”(即2018年的第三周為201803),並由用戶輸入。 這就是我所說的endDate。 然后,Excel本身會計算開始的一周,默認情況下,它是endDate前30周。 隨着單元格C17的值更改,宏應自動觸發。

因此,例如,在C17中輸入“ 201803”,然后excel計算出值“ 201725”並將其插入G17。 在C17中輸入新值會觸發該宏,該宏通過讀取單元格C17(endDate)和G17(startDate)的值開始。 然后,宏將取消選擇所有切片器項目(僅使用一個切片器),並選擇等於endDate或startDate或介於兩個值之間的那些項目。 由於2017年有52周,因此應將“ 201753”改寫為“ 201801”。 我知道這不是理想的解決方案,因為它每年需要更新,但這是我想出的最好的解決方案。

我幾乎沒有學過用C進行編程的知識,但這是我在VBA中編寫的第一批代碼之一,因此任何指針都將受到贊賞。 這是我到目前為止所得到的:

Private Sub Worksheet_Change(ByVal Target As Range)

'  18.01.2018 Oscar E.

    Dim startDate As Long
    Dim endDate As Long
    Dim n As Long
    Dim i As Long

    If Target.Address = "$C$3" Then
        endDate = Range("C17").Value
        startDate = Range("G17").Value
        With ActiveWorkbook.SlicerCaches("Slicer_YYYYWW")
            .ClearManualFilter
            For n = startDate To endDate
                If n = 201753 Then
                    n = 201801
                End If
                .SlicerItems(n).Selected = True
            Next
        End With
    End If
End Sub

現在,我得到一個

運行時錯誤“ 1004”:應用程序定義或對象定義的錯誤

.SlicerItems(n).Selected = True接近結尾處。 因此,我想問題是覆蓋了切片器項目的選擇。

SlicerItems必須為Stirng。 但是當.ClearManualFilter選中所有項目時。 不能選擇所有項目。

Dim startDate As Long
Dim endDate As Long
Dim n As Long
Dim i As Long
Dim strN As String
Dim sl As SlicerItem

If Target.Address = "$C$3" Then
    endDate = Range("C17").Value
    startDate = Range("G17").Value
    With ActiveWorkbook.SlicerCaches("Slicer_YYYYWW")
        .ClearManualFilter
        For n = startDate To endDate
            If n = 201753 Then
                strN = CStr(201801)
            End If
        Next
      For Each sl In .SlicerItems
        If sl.Name = strN Then
            sl.Selected = True
        Else
            sl.Selected = False
        End If
    Next
    End With
End If

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM