Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 在Sheet1中找到一个单元格,然后将其所在的整行复制到Sheet2中的第一个空行_Excel_Vba - Fatal编程技术网

Excel 在Sheet1中找到一个单元格,然后将其所在的整行复制到Sheet2中的第一个空行

Excel 在Sheet1中找到一个单元格,然后将其所在的整行复制到Sheet2中的第一个空行,excel,vba,Excel,Vba,我在以下行收到“下标超出范围”:Sheets(“Sheet1”).Cells(“a”,I).EntireRow.Copy。如何将该行复制并粘贴到Sheet2中打开的第一行 Sub IDwalkups() Dim endRow As Long Dim Match1() As Variant Dim ws As Worksheet Set ws = Worksheets("Sheet1") ICount = 0 endRow = Sheet1.Range("B999999").End(xlUp).R

我在以下行收到“下标超出范围”:Sheets(“Sheet1”).Cells(“a”,I).EntireRow.Copy。如何将该行复制并粘贴到Sheet2中打开的第一行

Sub IDwalkups()
Dim endRow As Long
Dim Match1() As Variant
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
ICount = 0
endRow = Sheet1.Range("B999999").End(xlUp).Row

Match1 = Sheet1.Range("E3:E" & endRow)
For i = LBound(Match1) To UBound(Match1)
    If Match1(i, 1) = "W" Then

    Sheets(“Sheet1”).Cells("A", i).EntireRow.Copy Destination:=Sheets   (“Sheet2”).Range(“A” & Rows.Count).End(xlUp).Offset(1)

    Else
   End If
Next i
End Sub
我看到两个错误。 首先,复制和粘贴是两个步骤(2个命令)。第二,如果使用
单元格
,则必须指定行和列作为数字参数。您必须将其更改为
范围

    If Match1(i, 1) = "W" Then
        Dim sourceRange As Range, destRange As Range
        Set sourceRange = ws.Range("A" & i).EntireRow
        ' or Set sourceRange = ws.Cells(i, 1).EntireRow
        sourceRange.Copy
        Set destRange = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1)
        destRange.PasteSpecial
    End If
我看到两个错误。 首先,复制和粘贴是两个步骤(2个命令)。第二,如果使用
单元格
,则必须指定行和列作为数字参数。您必须将其更改为
范围

    If Match1(i, 1) = "W" Then
        Dim sourceRange As Range, destRange As Range
        Set sourceRange = ws.Range("A" & i).EntireRow
        ' or Set sourceRange = ws.Cells(i, 1).EntireRow
        sourceRange.Copy
        Set destRange = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1)
        destRange.PasteSpecial
    End If

您有三个错误:

  • 使用
    而不是
    。例如,
    “Sheet1”
    是一个有效的变量名,可以在语句中使用,例如
    “Sheet1”=5*2
    。从语法上讲,它与
    “Sheet1”
    是一个字符串文本
  • 使用
    单元格(“A”,i)
    而不是
    单元格(i,“A”)
    -单元格
    的第一个参数是行,第二个参数是列
  • 使用
    行时未限定所指的工作表。计数
    (但这很有可能仍然有效)
所以

应该是

Sheets("Sheet1").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & Sheets("Sheet2").Rows.Count).End(xlUp).Offset(1)

您有三个错误:

  • 使用
    而不是
    。例如,
    “Sheet1”
    是一个有效的变量名,可以在语句中使用,例如
    “Sheet1”=5*2
    。在语法上,它与作为字符串文本的
    “Sheet1”
    有很大不同
  • 使用
    单元格(“A”,i)
    而不是
    单元格(i,“A”)
    -单元格
    的第一个参数是行,第二个参数是列
  • 使用
    行时未限定所指的工作表。计数
    (但这很有可能仍然有效)
所以

应该是

Sheets("Sheet1").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & Sheets("Sheet2").Rows.Count).End(xlUp).Offset(1)

Cells(“A”,i)
不正确,但是
Cells(i,“A”)
可以-列不需要是数字,它可以是字符串Hey YowE3K,我多年来一直使用VBA,一直使用
。Cells
,但从未意识到这一点。我只是在大约10个月前开始闲逛时才知道,我想自从VBA问世以来,我一直在使用它!哦-复制/粘贴不必是两个操作-OP所做的操作很好,因此这两个错误是不正确的引号,
单元格中的行/列开关都有效。非常感谢您的帮助。
Cells(“A”,i)
不正确,但是
Cells(i,“A”)
可以-列不需要是数字,可以是字符串Hey YowE3K,我多年来一直在使用VBA,一直都在使用
。Cells
,但我从未意识到这一点。我只是在大约10个月前开始闲逛时才知道这一点,我想我从VBA问世以来就一直在使用它!哦-复制/粘贴不必是两个操作-OP所做的操作很好,因此这两个错误是不正确的引号,
单元格中的行/列开关都有效。谢谢你,非常感谢你的帮助。