初学者宏观主义者在这里有问题!我试图通过一个下拉菜单来控制工作表上显示的图表。
现在,我有一个带有类别(例如A,B和C)的下拉菜单。
我在工作表的某个位置为每个类别创建了一个图表(例如,名为payA,payB和payC的图表)。
接下来,我有一个单元格,该单元格将单词“ pay”和下拉菜单的字母连接起来,以构成与图表名称相同的内容。
我希望宏删除仪表板上的图表(名为payDisplay),根据单元格复制适当的图表(此示例中的串联将在单元格EY38中),然后将其粘贴到适当的单元格中(此示例中为B34, (最初是payDisplay所在的位置),然后将新图表重命名为payDisplay。
Sub Change_Pay()
Dim c As String
c = Range("EY38").Value
ActiveSheet.ChartObjects("payDisplay").Delete
ActiveSheet.ChartObjects(c).Copy
ActiveSheet.Range("B34").Select
ActiveSheet.Paste
ActiveChart.Parent.Name = "payDisplay"
End Sub
我的宏在ActiveSheet.ChartObjects(c).Copy行上不断崩溃。
每当我打开工作表时,都会出现错误,并继续将图表粘贴到正确的位置,名称为payDisplay,此时宏可以正常工作。保存并重新打开文件后,宏不再起作用(也许该信息很有用)。
好的,我想可以为您提供帮助:
请检查单元格EY38的格式。删除任何会引起错误的“或”。
其次,来自一个也开始记录宏的家伙的建议:
尽可能不要使用激活和选择。这很慢,很难分析并且容易出错。
这是一个代码示例,它与您的功能相同,但没有激活和选择。
Sub Change_Pay()
Dim c As String
Dim COdel As ChartObject
Dim COcopy As ChartObject
Dim sht As Worksheet
c = Range("EY34").Value
Set sht = Worksheets(1) ' worksheet object instead of activesheet
Set COdel = sht.ChartObjects("payDisplay") ' Chartobject instead of activesheet.chartobjects("")
Set COcopy = sht.ChartObjects(c)
COdel.Delete
COcopy.Copy Destination:=sht.Range("B34") ' No need to select and paste if you give it the destination
COcopy.Parent.Name = "payDisplay"
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句