循环从单独的 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。
您知道如何在 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。