3

我正在尝试在不同的工作表中选择一整行,然后使用宏将该行复制到我当前所在的工作表中。如果 Rows() 子通过硬编码的整数传递,则代码工作正常,但是当我输入变量时,我得到“范围类的选择方法失败”错误。这是我的代码:

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

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

谢谢

4

7 回答 7

4

我刚刚测试了底部的代码,它打印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
于 2012-05-14T18:02:24.450 回答
3

我通过首先解决工作表来为我解决了这个问题:

ws.rows(x & ":" & y).Select

没有对工作表(ws)的引用,我得到了一个错误。

于 2018-08-24T21:16:14.960 回答
2

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

肖恩于 2001 年 10 月 14 日下午 1:24 发布

var1 = 1

var2 = 5

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

这对我有用,看起来您只需将变量保留在引号之外并添加 and 语句 (&)

-肖恩

于 2015-04-08T17:33:35.653 回答
1

关键在冒号和&两边的引号中,即rows(variable & ":" & variable).select

适应这个:

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

其中 x 和 y 是您的变量。

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

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

或者

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

或者

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

希望你明白这一点。

于 2016-11-10T17:58:50.597 回答
0

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

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

进入

 Rows(52:52).Select

尝试改变

Rows(""" & copyToRow & ":" & copyToRow & """).Select
于 2012-05-14T16:43:05.330 回答
0

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

错误

正确的解决方案是

Dim copyToRow: copyToRow = 5      
Rows(copyToRow & ":" & copyToRow).Select
于 2020-11-23T16:30:00.660 回答
0
mycell = ActiveCell
r = mycell.Row
c = mycell.Column
Range(Cells(r, c), Cells(r + 100, c)).Select
于 2021-12-08T18:00:24.937 回答