保罗,如果我没有解决您的问题,我会提前道歉。直到现在,我还没有意识到有两种类型的图表,我有兴趣了解与他们的问题。无论如何,经过一番混战之后,我能够创建一个图表,命名它,让它持续下去,并对事件做出反应。它不依赖于互操作的图表,但:
Public Class ThisWorkbook
Dim clsChart As cChart
Private Sub ThisWorkbook_Startup() Handles Me.Startup
Dim coChartObj As Microsoft.Office.Interop.Excel.ChartObject
Dim chtMyChart As Microsoft.Office.Interop.Excel.Chart
Dim i As Int32
With Globals.Sheet1
For i = 1 To .ChartObjects.count
If .ChartObjects(i).Name = "MyChart" Then
chtMyChart = .ChartObjects(i).chart
Exit For
End If
Next i
If chtMyChart Is Nothing Then
chtMyChart = .Shapes.AddChart.Chart
chtMyChart.SetSourceData(.Range("A1:B2"))
coChartObj = chtMyChart.Parent
coChartObj.Name = "MyChart"
End If
clsChart = New cChart
clsChart.chtChart = chtMyChart
End With
End Sub
End Class
Public Class cChart
Public WithEvents chtChart As Microsoft.Office.Interop.Excel.Chart
Private Sub chtChart_Resize() Handles chtChart.Resize
MessageBox.Show("resize")
End Sub
End Class
根据http://msdn.microsoft.com/en-us/library/cc442765.aspx: 要重新创建Microsoft.Office.Tools.Excel .Chart主机控件,您必须先删除本机Microsoft.Office.Interop.Excel.Chart,然后使用AddChart(范围,字符串)或AddChart(双精度)重新创建Microsoft.Office.Tools.Excel.Chart。 Double,Double,Double,String)方法。没有添加方法,使您可以基于现有的Microsoft.Office.Interop.Excel.Chart创建新的Microsoft.Office.Tools.Excel.Chart。 所以看起来他们必须在_Startup上完全重新创建。 –
Paul
2010-08-05 23:15:34