退出切片器选择循环
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
没有在网络上找到任何答案,所以我们开始:
我正在尝试找到一种在切片器的 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