在运行时将图表复制到userform多页面

时间:2015-09-30 10:43:31

标签: vba excel-vba charts userform multipage

我在工作表中有一些数据,我需要用它来创建图表。这些图表将在用户表单中填充多页的不同页面。 这些页面需要按照创建图表的顺序填充。

我对图表没有任何困难并从中创建图像。我可以将该图像复制到第一页(它已经有一个图像对象)。为了创建新页面,我使用以下代码:

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

1 个答案:

答案 0 :(得分:0)

没关系,我解决了!我没有在multipage1的每个页面中使用图像对象,而是删除了它们并替换了

 UserForm2.Image1.Picture = LoadPicture(imageName) 

 UserForm2.MultiPage1.Pages(k).Picture = LoadPicture(imageName)