在用户表单上创建图表的 VBA 代码在每次运行后生成新的工作表

问题描述 投票:0回答:0

我终于找到了满足我创建图表需求的代码(下面的代码)。但是我有两个问题:

1- 最糟糕的是,每次我运行代码时,它都会在我的工作簿上制作 2 张纸。一个包含空白图表框,一个包含图表本身。后者,由于代码被隐藏了,但无论如何,在运行代码 5 次后,我的工作簿上有 10 个新工作表,必须删除它们。

2-我无法使用我尝试过的任何调整代码来调整它的大小。在这里,我有

.ChartArea.Height
.ChartArea.Width
这给了我错误:形状被锁定并且无法调整大小。

真的有控制尺寸的实用方法吗?

Private Sub CommandButton4_Click()

Charts.Add

chartarray1 = Array(Val(UserForm1.TextBox6.Value), Val(UserForm1.TextBox7.Value))
chartarray2 = Array("methane", "carbon")

Dim mychart As Chart
Dim fname As String

Set mychart = Charts.Add
With mychart
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = "emissions"
.SeriesCollection(1).XValues = chartarray2
.SeriesCollection(1).values = chartarray1
.ChartType = xlBarClustered
    .ChartArea.Height = 107
    .ChartArea.Width = 167
.ChartStyle = 6
End With


ActiveChart.Export "C:\Users\shsy\chart1.jpg"

f = activesheet.Name
Sheets(f).Select
ActiveWindow.SelectedSheets.Visible = False

fname = "C:\Users\shsy\chart1.jpg"
UserForm1.Image1.Picture = LoadPicture(fname)

End Sub

我强调我需要图表是交互式的(动态的)并且只在用户表单上制作,变量也来自表单上的文本框。 随着 chart.gif/jpg 被临时保存在系统上,我没有问题,但每次运行导致创建新工作表的代码真的很烦人。

提前感谢您的帮助。

我想编辑代码,这样它就不会创建额外的工作表。

vba charts worksheet
© www.soinside.com 2019 - 2024. All rights reserved.