我正在尝试在不同的工作表中选择整行,然后将该行复制到我当前使用宏的工作表中。如果Rows()子传递硬编码的整数,代码工作正常但是当我放置一个变量时,我得到“Range类失败的选择方法”错误。这是我的代码:
Sheets("BOM").Select
Rows(copyFromRow & ":" & copyFromRow).Select
Selection.Copy
Sheets("Proposal").Select
Rows(copyToRow & ":" & copyToRow).Select
ActiveSheet.Paste
copyToRow = copyToRow + 1
Rows(copyToRow & ":" & copyToRow).Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
如果我使用了:
Rows("52:52").Select
Selection.Copy
它工作正常,但当变量存在时,就会发生错误。
由于
答案 0 :(得分:3)
我刚刚测试了底部的代码,它打印16384
两次(我在Excel 2010上)并且第一行被选中。你的问题似乎在其他地方。
你是否试图摆脱选择:
Sheets("BOM").Rows(copyFromRow).Copy
With Sheets("Proposal")
.Paste Destination:=.Rows(copyToRow)
copyToRow = copyToRow + 1
Application.CutCopyMode = False
.Rows(copyToRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End With
测试代码以确信问题似乎不像您认为的那样。
Sub test()
Dim r
Dim i As Long
i = 1
r = Rows(i & ":" & i)
Debug.Print UBound(r, 2)
r = Rows(i)
Debug.Print UBound(r, 2)
Rows(i).Select
End Sub
答案 1 :(得分:1)
在另一个网站上看到这个答案,它对我也有用!
Shawn发表于2001年10月14日下午1:24
var1 = 1
var2 = 5
Rows(var1 & ":" & var2).Select
这对我有用,看起来你只需要将变量保留在引号之外并添加和声明(&)
-Shawn
答案 2 :(得分:1)
键在冒号和&周围的引号中,即行(变量&“:”& variable).select
改编:
Rows(x & ":" & y).select
其中x和y是你的变量。
其他一些可以帮助您理解的例子
Rows(x & ":" & x).select
或者
Rows((x+1) & ":" (x*3)).select
或者
Rows((x+2) & ":" & (y-3)).select
希望你明白这一点。
答案 3 :(得分:1)
我也通过首先解决工作表为我解决了这个问题:
ws.rows(x & ":" & y).Select
没有引用工作表(ws),我得到了一个错误。
答案 4 :(得分:0)
您需要添加引号。 VBA正在翻译
Rows(copyToRow & ":" & copyToRow).Select`
到
Rows(52:52).Select
尝试更改
Rows(""" & copyToRow & ":" & copyToRow & """).Select
答案 5 :(得分:0)