我在行开始处收到“下标超出范围”: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
答案 0 :(得分:1)
我看到2个错误。
首先是复制&粘贴是两个步骤(2个命令)。其次,如果使用Cells
,则必须将行和列作为数字参数。您必须将其更改为Range
。
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
答案 1 :(得分:1)
您遇到的三个错误是:
“
和”
代替"
。例如,“Sheet1”
是有效的变量名称,可以在“Sheet1” = 5 * 2
等语句中使用。从语法上讲,它与"Sheet1"
完全不同,后者是一个字符串文字。Cells("A", i)
代替Cells(i, "A")
- Cells
的第一个参数是行,第二个参数是列。Rows.Count
时不符合您所指的哪个表格(但很有可能这样做无论如何都有效)所以
Sheets(“Sheet1”).Cells("A", i).EntireRow.Copy Destination:=Sheets (“Sheet2”).Range(“A” & Rows.Count).End(xlUp).Offset(1)
应该是
Sheets("Sheet1").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & Sheets("Sheet2").Rows.Count).End(xlUp).Offset(1)