嗨,我完全是新的VBA。我正在尝试创建一个按钮,它可以自动将数据从sheet1上的列A-E("概述")复制到Sheet2("示例")。
以下是我从教程视频中复制的代码,但最终会出现错误424消息 - 需要对象。
问题似乎与拉斯特罗: lastrow = Sheetoverview.Cells(Rows.Count,1).End(xlUp).Row
任何人都可以帮我解决这个问题吗?谢谢!
Sub copyconlumns()
Dim lastrow As Long, erow As Long
lastrow = Sheetoverview.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow
Sheetoverview.Cells(i, 1).copy
erow = sheetexample.Cells(Tows.Count, 1).End(xlUp).Offset(1, 0).Row
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 1)
Sheetoverview.Cells(i, 2).copy
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 2)
Sheetoverview.Cells(i, 3).copy
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 3)
Sheetoverview.Cells(i, 4).copy
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 4)
Sheetoverview.Cells(i, 5).copy
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 5)
Next i
Application.CutCopyMode = False
sheetexample.Columns.AutoFit
Range("A1").Select
End Sub
答案 0 :(得分:1)
VBA中的点运算符访问对象的属性或方法。因此 - 当您在
中收到object required
错误时
lastrow = Sheetoverview.Cells(Rows.Count, 1).End(xlUp).Row
点之前出现问题。在这种情况下几乎可以肯定Sheetoverview
。除非这是一个全局变量,它已经被赋予了一个超出sub的值(这将是一个有问题的设计),这是一个未声明的变量,它从未被设置为等于一个工作表。如果您将Sheetoverview
替换为Sheets("Overview")
,将sheetexample
替换为Sheets("Example")
,则您的代码更有效。
很难过分强调将行Option Explicit
放在VBA中每个模块顶部的重要性。这会强制您声明变量并允许编译器捕获许多错误,就像您在此处获得的错误一样。可以将VBA编辑器配置为在所有新模块(Tools/Options/Require Variable Declatation
)中自动插入该行。