Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于变量excel vba选择整行_Excel_Vba - Fatal编程技术网

基于变量excel vba选择整行

基于变量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

我正在尝试选择其他工作表中的整行,然后使用宏将该行复制到当前工作表中。如果Rows()子被硬编码为整数,那么代码可以正常工作,但是当我放入一个变量时,会出现“Select method of Range class failed”错误。以下是我的代码:

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