我使用以下命令通过 vba 添加图表:
\n\nDim 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...\nRun Code Online (Sandbox Code Playgroud)\n\n如何证明重新打开 Excel 文件时该图表是否已创建?我尝试过类似的东西:
\n\nIf CsvVisualization Is Nothing Then\nRun Code Online (Sandbox Code Playgroud)\n\n但是当文件关闭并再次打开时,CsvVisualization 将不会保留它的值。
\n\n谢谢你的帮助!
\nDim 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\nRun Code Online (Sandbox Code Playgroud)\n
您可以查看工作簿中的所有图表,以查看在工作表打开时是否已存在具有该名称的图表:
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)