根据variablesexcel vbaselect整行

我试图select不同的工作表中的整个行,然后将该行复制到我正在使用macros的工作表中。 代码工作正常,如果行()子传递整数硬编码,但是当我把一个variables,我得到的“select方法的范围类失败”错误。 这里是我有的代码:

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 

它工作正常,但是当variables存在时,会发生错误。

谢谢

我只是testing底部的代码,它打印两次16384 (我在Excel 2010),第一行被选中。 你的问题似乎在别的地方。

你试图摆脱select:

 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 

testing代码,以确信问题似乎并不是你想象的那样。

 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 

在另一个网站看到这个答案,它也适用于我!

Shawn发表于2001年10月14日下午1:24

var1 = 1

var2 = 5

Rows(var1 & ":" & var2).Select

这对我工作,看起来像你只需要保持在引号外的variables,并添加和语句(&)

-Shawn

关键是在引号周围的冒号和&即行(variables&“:”和variables).select

适应这个:

 Rows(x & ":" & y).select 

其中x和y是你的variables。

其他一些可能会帮助你理解的例子

 Rows(x & ":" & x).select 

要么

 Rows((x+1) & ":" (x*3)).select 

要么

 Rows((x+2) & ":" & (y-3)).select 

希望你明白了。

你需要添加引号。 VBA正在翻译

 Rows(copyToRow & ":" & copyToRow).Select` 

  Rows(52:52).Select 

尝试改变

 Rows(""" & copyToRow & ":" & copyToRow & """).Select