循环从单独的 ranges/tables 制作图表

Loop to make charts from separate ranges/tables

您知道如何在 VBA 中创建循环以插入图表,例如为每个包含字符串“%”的范围或仅为每个单独的范围插入图表,如图所示吗?我尝试使用如图所示的代码,但它只为第一个范围添加图表,而不是为所有范围添加图表。

我试过这样的代码:

Sub Charts()
Const SFind As String = "%"
Dim rng As Range
Dim lo As ListObjects


For Each lo In Worksheets("Wyniki").ListObjects

On Error Resume Next
Set rng = ActiveSheet.Cells.Find(SFind).CurrentRegion
If Not rng Is Nothing Then
 With ActiveSheet.Shapes.AddChart.Chart
  .ChartType = xlColumnClustered
  .SetSourceData rng
 End With
End If

Next

End Sub

您需要使用 lo 的范围作为数据源。

Public Sub CreateChartsFromAllTables()
    Dim lo As ListObject
    For Each lo In Worksheets("Wyniki").ListObjects
        With Worksheets("Wyniki").Shapes.AddChart.Chart
            .ChartType = xlColumnClustered
            .SetSourceData lo.Range
        End With
    Next
End Sub

永远不要像以前那样只使用 On Error Resume Next。这是邪恶的,因为它隐藏了所有错误消息,直到 End Sub 但错误仍然发生,您只是看不到他们的消息。如果您没有看到消息但存在错误,则无法修复它们。如果您不修复它们,代码将不起作用。永远不要这样使用它。有关如何正确使用错误处理的信息,请参阅 VBA Error Handling – A Complete Guide