Excel 如何解决VBA错误“无法获取范围类的选定属性”

Excel 如何解决VBA错误“无法获取范围类的选定属性”,excel,vba,Excel,Vba,我是VBA新手,刚开始自学。 当我尝试运行我的程序时 Sub cpy() range("k1:k12").Select Selection.copy Application.Goto Worksheets("Sheet1").range("m4").Select ActiveSheet.Paste End Sub 。。。出现以下错误:无法获取range类的选定属性。 所以我试着分别运行出错线路: Sub

我是VBA新手,刚开始自学。 当我尝试运行我的程序时

Sub cpy()
    range("k1:k12").Select
    Selection.copy
    Application.Goto Worksheets("Sheet1").range("m4").Select
    ActiveSheet.Paste
End Sub
。。。出现以下错误:无法获取range类的选定属性。 所以我试着分别运行出错线路:

Sub cck()
    Application.Goto Worksheets("Sheet1").range("m4").Value
End Sub
它显示以下错误:运行时错误“1004”:引用无效

Excel文件是新的,包含3张图纸,图纸名称未更改。我试着在Sheet3上运行上面的代码。

Application.Goto本身已经选择了,所以像这样在末尾附加Select是没有意义的。Goto执行一个操作-它进入某个范围,而不返回您需要选择的范围

无论如何,解决错误的最佳方法是从代码中删除Select。很少需要它。看

即使这个链接的问题是关于Select的,它也适用于Application.Goto。Select和Goto都会导致意大利面代码。Dijkstra写了一篇所有程序员都应该至少读一次的经典文章。他没有应用程序。当然,Goto在脑海中,但它仍然适用。

复制范围的三种方法 , 在这个阶段,一步一步地进行:使用Option Explicit,将变量(如Dim wb)声明为工作簿,并创建引用以设置所有对象(如Set ws=ThisWorkbook)。 选项显式 子副本范围副本 '工作簿 将wb设置为工作簿:设置wb=ThisWorkbook包含此代码的工作簿 "来源: 将sws标注为工作表:设置sws=wb.WorksheetsSheets3 尺寸srg作为范围:设置srg=sws。范围K1:K12 “目的地 将dws标注为工作表:设置dws=wb.WorksheetsSheets1 尺寸dCell作为范围:设置dCell=dws.RangeM4 '复制值、公式、格式 复制数据单元 '仅按赋值复制,但复制速度非常快 'dCell.Resizesrg.Rows.Count=srg.Value '复制/粘贴多个选项,但目标工作表变为活动状态 “srg.Copy “dCell.PasteSpecial”有许多选项 'Application.CutCopyMode=False 端接头
您好,从您的代码中,我了解到您正在尝试粘贴复制的值k1到k12到M4及其子序列列。如果是,请使用工作表sheets1.RangeM4.PasteSpecial Paste:=xlPasteValues。希望它能帮助你。谢谢