对象工作表的方法范围失败excel VBA

时间:2018-07-09 17:17:38

标签: excel vba range

我在使用Excel Visual Basic宏时遇到了一个特殊的问题。 我已经编写了一个脚本,将一个动态范围的数据从一个工作表简单地粘贴到另一个工作表。粘贴到的工作表是一个正在运行的工作表,每当向其发送新数据时,该工作表就会更新到下一个空行。 对于某些数据范围,我的代码中断并给我1004错误。 我看过多个类似的问题,但它们似乎并没有给我任何解决方案。

我将首先发布我的代码,然后发布有效的数据集和无效的数据集。

Private Sub RunningSheetClick_Click()

Dim lastrow As Long

Dim Vals As Range

Dim copyWS As Worksheet
Dim pasteWS As Worksheet

Set pasteWS = Sheets("Full List")
Set copyWS = Sheets("Macro Test")
Setlastrow = Sheets("Full List").Range("A" & Rows.count).End(xlUp).Row + 1

copyWS.Activate

' the following line is where my error appears
Set Vals = copyWS.Range("B3:S" & copyWS.Range("B3").End(xlDown))

Vals.Select

Vals.Copy _
    Destination:=pasteWS.Range("A" & lastrow)

End Sub

This is a data set that works and exports correctly to the sheet "Full List"

This is a data set that does not, I believe it has to do with column B and the strings that are in those cells as compared to the integers in the first data set

任何帮助将不胜感激,谢谢您抽出宝贵的时间

1 个答案:

答案 0 :(得分:0)

这是错误的语法,永远不会起作用。您只是不能将范围对象连接到字符串上,而期望有效的范围对象。我怀疑它可以与数字一起使用,因为copyWS.Range("B3").End(xlDown)默认返回其单元格值。因此,如果B列底部的值为99,则将解析为Range("B3:S99")

Set Vals = copyWS.Range("B3:S" & copyWS.Range("B3").End(xlDown))

应该是这样的

with copyWS
    Set Vals = .Range(.cells(3, "B"),  .cells(rows.count, "B").end(xlup).offset(0, 17))
end with