在userform中选择图表

Mat*_*ewK 5 excel charts vba excel-vba

我正在寻找一个宏,它从一个图复制格式并将其应用于多个其他图.

我正在努力做的是确定一种方法,允许用户设置模板图表,然后选择多个其他图表.虽然如果用户知道图表名称,可以使用组合框完成此操作,但我试图在没有他们知道图表名称的情况下执行此操作.

因此我想到有一个用户对话框,用户可以在其中选择基本图表,然后选择要应用格式的图表.就像refedit一个范围.但是,我无法弄清楚如何从用户表单中引用图表.

可以这样做,如果是这样,怎么办?

Sid*_*out 6

这将是什么让你开始.

在userform上放置两个ComboBox和两个Image Controls.

在此输入图像描述

假设您的工作表看起来像这样

在此输入图像描述

如果UserForm_Initialize()在两个组合框中填充图表名称.例如

Dim ws As Worksheet

'~~> Prepare your form
Private Sub UserForm_Initialize()
    Set ws = ThisWorkbook.Sheets("Sheet1")

    Dim ChartObj As ChartObject

    For Each ChartObj In ActiveSheet.ChartObjects
        ComboBox1.AddItem ChartObj.Name
        ComboBox2.AddItem ChartObj.Name
    Next ChartObj
End Sub
Run Code Online (Sandbox Code Playgroud)

因此,当您运行表单时,它将如下所示

在此输入图像描述

在组合框的单击事件中,使用来自HERE的Stephen Bullen的PastePicture代码在userform中显示图表.例如

Private Sub ComboBox1_Click()
    ws.Shapes(ComboBox1.Value).CopyPicture
    Set Me.Image1.Picture = PastePicture(xlPicture)
End Sub

Private Sub ComboBox2_Click()
    ws.Shapes(ComboBox2.Value).CopyPicture
    Set Me.Image2.Picture = PastePicture(xlPicture)
End Sub
Run Code Online (Sandbox Code Playgroud)

这就是表单的外观.

从那以后,现在你有了图表的名称.只需使用它们就可以随意工作.

希望这可以帮助.

在此输入图像描述