退出切片器选择循环

Exit a slicer selection loop

没有在网络上找到任何答案,所以我们开始:

我正在尝试找到一种在切片器的 i 计数完成之前退出 if 语句的方法。

假设我有 2 个切片器:a) 国家和 b) 地区。当一个国家被 selected 时,只有少数地区可以 select 然后我一个一个地导出。

[...]
With ActiveWorkbook.SlicerCaches("Slicer_Region")
     '[.... something with i=1 which is different]
     For i = 2 To .SlicerItems.Count
            If Cells(41, 3).Value <> "" Then
                .SlicerItems(i).Selected = True
                .SlicerItems(i - 1).Selected = False
                Name = .SlicerItems(i).Name
                strFName = "Region " & Name & ".pdf"
                ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                strPath & strFName, Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
            'Else:
            '    End If
            '    GoTo goout
            End If
        Next i
'goout:
End With 
[...] 

条件 If Cells(41, 3).Value <> ""查看数据透视表中是否有数据 - 这将是包含数据的第一行。因此我避免导出空白区域。然而,循环仍将在每个地区继续进行,即使这是不可能的(不是在已经 selected 的国家)。

只要有一个 'empty region',接下来的所有内容也将是空的(因为切片器首先显示已填充的切片)。因此,一旦条件变为空 Cells(41, 3).Value <> "" 我希望它退出循环,因为它只是白白占用时间。

我不知道该怎么做,这里的代码中的方式给我一个错误:"endif without block if" - 这是有道理的

这没有错,但不可取:

With ActiveWorkbook.SlicerCaches("Slicer_Region")
 '[.... something with i=1 which is different]
 For i = 2 To .SlicerItems.Count
        If Cells(41, 3).Value <> "" Then
            .SlicerItems(i).Selected = True
            .SlicerItems(i - 1).Selected = False
            Name = .SlicerItems(i).Name
            strFName = "Region " & Name & ".pdf"
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            strPath & strFName, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        Else
            GoTo goout
        End If
    Next i
goout:
End With 

而是使用 Exit For 语句。您通常希望避免使用行标签

'[..]
        Else
            Exit For
        End If
    Next i
End With