根据变量excel vba选择整行

时间:2012-05-14 16:05:25

标签: excel vba

我正在尝试在不同的工作表中选择整行,然后将该行复制到我当前使用宏的工作表中。如果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

它工作正常,但当变量存在时,就会发生错误。

由于

6 个答案:

答案 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)

需要确保变量和'&'符号之间的空间。 检查图像。 (红色显示无效命令)

Error

正确的解决方法是

Dim copyToRow: copyToRow = 5      
Rows(copyToRow & ":" & copyToRow).Select