基于变量excel vba选择整行
我正在尝试选择其他工作表中的整行,然后使用宏将该行复制到当前工作表中。如果Rows()子被硬编码为整数,那么代码可以正常工作,但是当我放入一个变量时,会出现“Select method of Range class failed”错误。以下是我的代码:基于变量excel vba选择整行,excel,vba,Excel,Vba,我正在尝试选择其他工作表中的整行,然后使用宏将该行复制到当前工作表中。如果Rows()子被硬编码为整数,那么代码可以正常工作,但是当我放入一个变量时,会出现“Select method of Range class failed”错误。以下是我的代码: Sheets("BOM").Select Rows(copyFromRow & ":" & copyFromRow).Select Selection.Copy Sheets("Proposal").Select Rows(cop
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
它工作正常,但当变量存在时,就会发生错误
谢谢您需要添加引号。VBA正在翻译
Rows(copyToRow & ":" & copyToRow).Select`
进入
试着改变
Rows(""" & copyToRow & ":" & copyToRow & """).Select
我刚刚测试了底部的代码,它打印了两次
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
在另一个网站上看到了这个答案,它对我也很有用 肖恩于2001年10月14日下午1:24发布
var1=1
var2=5
行(var1&“:”&var2)。选择
这对我来说很有效,看起来您只需将变量保留在引号之外,并添加and语句(&)
-肖恩
键位于冒号和&,即行(变量&“:”&variable)周围的引号中。选择
对此进行调整:
Rows(x & ":" & y).select
其中x和y是变量
其他一些可能有助于您理解的示例
Rows(x & ":" & x).select
或
或
希望您能理解。我先解决了工作表中的问题:
ws.rows(x & ":" & y).Select
没有对工作表(ws)的引用,我得到了一个错误。需要确保变量和“&”符号之间的空格。
检查图像。(红色显示无效命令)
正确的解决办法是
Dim copyToRow: copyToRow = 5
Rows(copyToRow & ":" & copyToRow).Select
您是否在调试模式下检查了copyFromRow
的值?是52吗?另外,如果copyFromRow
是一个数字,您可以简单地使用Rows(copyFromRow)
。是的,它是正确的值,我尝试了两种方法,但worksNo、copyToRow&“:”©ToRow
都不是字符串。你的建议会出错。
Rows((x+2) & ":" & (y-3)).select
ws.rows(x & ":" & y).Select
Dim copyToRow: copyToRow = 5
Rows(copyToRow & ":" & copyToRow).Select