如何检查图表是否已创建

use*_*049 5 excel vba

我使用以下命令通过 vba 添加图表:

\n\n
Dim CsvVisualization As ChartObject\nSet ChartSizePosition = Range("B8:I25")\nSet CsvVisualization = ThisWorkbook.Sheets("\xc3\x9cbersicht").ChartObjects.Add(ChartSizePosition.Left, ChartSizePosition.Top, ChartSizePosition.Width, ChartSizePosition.Height)\nCsvVisualization.Name = "MeasurementVisualization"\nWith CsvVisualization.Chart\n    .ChartType = xlXYScatterSmoothNoMarkers\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何证明重新打开 Excel 文件时该图表是否已创建?我尝试过类似的东西:

\n\n
If CsvVisualization Is Nothing Then\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当文件关闭并再次打开时,CsvVisualization 将不会保留它的值。

\n\n

谢谢你的帮助!

\n

Fre*_*Man 6

Dim CsvVisualization As ChartObject\nDim MyChartName as string\nDim CreateChart as Boolean\n\nMyChartName = "MeasurementVisualization"\nCreateChart = True\n\nIf ThisWorkbook.Sheets("\xc3\x9cbersicht").ChartObjects.Count = 0 Then\n  For Each CsvVisualization in ThisWorkbook.Sheets("\xc3\x9cbersicht").ChartObjects\n    If CsvVisualization.name = MyChartName then\n      CreateChart = False\n    End If\n  Next\nEnd if\n\nIf CreateChart then\n  Set ChartSizePosition = Range("B8:I25")\n  Set CsvVisualization = ThisWorkbook.Sheets("\xc3\x9cbersicht").ChartObjects.Add(ChartSizePosition.Left, ChartSizePosition.Top, ChartSizePosition.Width, ChartSizePosition.Height)\nCsvVisualization.Name = "MeasurementVisualization"\n  With CsvVisualization.Chart\n    .ChartType = xlXYScatterSmoothNoMarkers\n...\nEnd If\n
Run Code Online (Sandbox Code Playgroud)\n


JNe*_*ill 5

您可以查看工作簿中的所有图表,以查看在工作表打开时是否已存在具有该名称的图表:

Private Sub Workbook_Open()
    Dim testChart As ChartObject

    For Each testChart In ThisWorkbook.Charts
        If testChart.Name = "MeasurementVisualization" Then
            'Chart exists, so do something or not or whatever or what have you
        End If
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)