在工作表中循环以在VBA中创建图形
我试图根据工作表中的一些数据创建一个图表。我有一个创建图形的代码 问题 我正在尝试循环检查工作簿中的工作表,以检查图表是否已经存在,在这种情况下,我将激活它,清除以前的数据并放入新数据 如果不是,我创建一个新的图形并将数据放入 我试图创建一个双循环来检查工作表的名称是否匹配,但这不起作用(无法将图表设置为“无”) 有什么办法吗 当前代码(仅相关部分)在工作表中循环以在VBA中创建图形,vba,excel,charts,Vba,Excel,Charts,我试图根据工作表中的一些数据创建一个图表。我有一个创建图形的代码 问题 我正在尝试循环检查工作簿中的工作表,以检查图表是否已经存在,在这种情况下,我将激活它,清除以前的数据并放入新数据 如果不是,我创建一个新的图形并将数据放入 我试图创建一个双循环来检查工作表的名称是否匹配,但这不起作用(无法将图表设置为“无”) 有什么办法吗 当前代码(仅相关部分) 名称“Ret”是图表对象的属性,而不是图表 最高的层次结构是ChartObject,在它下面可以找到Chart、Name和其他许多层次结构,请参见
名称
“Ret”是图表对象
的属性,而不是图表
最高的层次结构是ChartObject
,在它下面可以找到Chart
、Name
和其他许多层次结构,请参见下面的简图:
ChartObject
--> Chart
|--> ChartArea
|--> Axes
|--> SeriesCollection
|--> Format.Line
--> Name
--> Top
--> Left
--> Height
--> Width
注释:我建议使用图表对象
,然后您可以轻松地嵌套在下面以修改所有其他属性。此外,几乎所有情况下都没有理由使用Select
和Selection
,而是使用完全限定的ChartObjects
及其嵌套属性
下面的代码将遍历所有工作表
,然后对于每个工作表
将遍历所有图表对象
,并搜索“Ret”
代码
Option Explicit
Sub LoopSheets_ChartObjects()
Dim RetChart As Chart
Dim ChtObj As ChartObject
Dim ws As Worksheet
Dim w As Workbook
Set w = ThisWorkbook
For Each ws In w.Worksheets
If ws.Name = "RetGraph" Then
For Each ChtObj In ws.ChartObjects
If ChtObj.Name = "Ret" Then '<-- if there is a match
Set RetChart = ChtObj.Chart ' <-- set chart to ChartObject.Chart
End If
Next ChtObj
End If
Next ws
If RetChart Is Nothing Then
MsgBox "NOT Found"
' do your coding stuff
End If
End Sub
选项显式
子循环表\u图表对象()
作为图表的图表
将ChtObj设置为图表对象
将ws设置为工作表
将w作为工作簿
Set w=此工作簿
对于w工作表中的每个ws
如果ws.Name=“RetGraph”,则
对于ws.ChartObjects中的每个ChtObj
如果ChtObj.Name=“Ret”,则可以避免在图纸中循环
Dim RetChart As Chart
On Error Resume Next
Set RetChart = w.Charts("RetGraph")
On Error GoTo 0
If RetChart Is Nothing Then '<--| chart not found
MsgBox "NOT Found"
' do your coding stuff
Else ' <--| chart found
RetChart.ChartTitle.Text = "Test" '<-- for debug only
End If
Dim RetChart作为图表
出错时继续下一步
设置RetChart=w.Charts(“RetChart”)
错误转到0
如果RetChart算不了什么,那么“谢谢你的回答。我知道你在工作表中循环浏览了图表。我的错误是在图表表中创建图表。我现在正试图循环浏览它,看看图表是否已经存在。如果没有,请创建一个图表。
Dim RetChart As Chart
Dim Cht_Sht As Chart
For Each Cht_Sht In w.Charts
If Cht_Sht.Name = "RetGraph" Then
Set RetChart = Cht_Sht
End If
Next Cht_Sht
If RetChart Is Nothing Then
MsgBox "NOT Found"
' do your coding stuff
Else ' <-- chart found
RetChart.ChartTitle.Text = "Test" '<-- for debug only
End If
Dim RetChart As Chart
On Error Resume Next
Set RetChart = w.Charts("RetGraph")
On Error GoTo 0
If RetChart Is Nothing Then '<--| chart not found
MsgBox "NOT Found"
' do your coding stuff
Else ' <--| chart found
RetChart.ChartTitle.Text = "Test" '<-- for debug only
End If