我在工作表中有一些数据,我需要用它来创建图表。这些图表将在用户表单中填充多页的不同页面。 这些页面需要按照创建图表的顺序填充。
我对图表没有任何困难并从中创建图像。我可以将该图像复制到第一页(它已经有一个图像对象)。为了创建新页面,我使用以下代码:
MultiPage1.Pages.Add
MultiPage1.Pages(0).Controls.Copy
MultiPage1.Pages(k).Paste
复制控件时,它还会复制上一张图像。只要新图像被新创建的图表图像替换,这应该不是问题。问题是,新图表被复制到第一页,而不是最后一页创建(但情况并非总是如此......我不明白)。我尝试使用UserForm2.MultiPage1.Value = k
强制选择新页面,但它仍无效。
这是我写的代码:
Dim MyChart As Chart
Dim ChartData As Range
Dim ChartName As String
Dim thiswb As Workbook
Dim imageName As String
Dim nColunas As Long
Dim i, j, k As Integer
Set thiswb = ThisWorkbook
k = 0
With thisWb.Sheets(3)
nColunas = .Cells(2, .Columns.Count).End(xlToLeft).Column
For i = 1 To nColunas - 1 Step 3
If i > 1 Then
MultiPage1.Pages.Add
MultiPage1.Pages(0).Controls.Copy
MultiPage1.Pages(k).Paste
End If
Set ChartData = .Range(.Cells(2, i), .Cells(95, i))
Set MyChart = .Shapes.AddChart(xlXYScatterLines).Chart
MyChart.SeriesCollection(1).Values = ChartData
MyChart.SeriesCollection(1).XValues = .Range(.Cells(2, i + 1), .Cells(95, i + 1))
imageName = Application.DefaultFilePath & Application.PathSeparator & "TempChart.gif"
MyChart.Export Filename:=imageName, FilterName:="GIF"
.ChartObjects(1).Delete
UserForm2.MultiPage1.Value = k
UserForm2.Image1.Picture = LoadPicture(imageName)
Kill imageName
k = k + 1
Next i
End With
如果我要显示4个图表,最终结果将是:chart4 / chart1 / chart2 / chart3而不是chart1 / chart2 / chart3 / chart4
答案 0 :(得分:0)
没关系,我解决了!我没有在multipage1的每个页面中使用图像对象,而是删除了它们并替换了
UserForm2.Image1.Picture = LoadPicture(imageName)
与
UserForm2.MultiPage1.Pages(k).Picture = LoadPicture(imageName)