我使用Record Macro option
在excel中录制了一个宏。但是,当我运行它时,我得到了Error 438
,错误框显示Object does not support property or method
。下面是生成的宏代码。有人能在这里解释一下吗:
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveCell.Range("A1:C1").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet2'!$A$4:$C$4")
ActiveChart.ChartType = xlPie
Application.CutCopyMode = True
Selection.Cut
Sheets("Sheet3").Select
ActiveSheet.Paste
Sheets("Sheet2").Select
ActiveCell.Offset(1, 0).Range("A1").Select
当我调试时,我在Selection.Cut
中得到错误。我想知道为什么录制的宏会生成不能工作的代码
发布于 2013-11-11 18:11:58
虽然不是一个好方法,
但是将Selection.Cut
更改为Selection.Parent.Parent.Cut
应该是可行的。
请记住,请尽可能避免使用Select
发布于 2013-11-11 20:59:54
稍微打磨过的版本(使用引用和避免选择),应该可以工作:
Sub Macro1()
' Macro1 Macro
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ActiveSheet ' This is likely 'Sheet 1'
Dim rng As Range
Set rng = ActiveCell.Range("A1:C1")
Dim shp As Shape
Set shp = ws1.Shapes.AddChart
shp.Chart.SetSourceData Source:=Range("'Sheet2'!$A$4:$C$4")
shp.Chart.ChartType = xlPie
Application.CutCopyMode = True
shp.Cut
Sheets("Sheet3").Paste
Set ws2 = Sheets("Sheet2")
ws2.Activate
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
https://stackoverflow.com/questions/19903422
复制相似问题