Excel的VBA - Range.Find错误1004
问题描述:
下面我有一些代码:Excel的VBA - Range.Find错误1004
Sub Priority()
ActiveSheet.Name = "Raw Data"
Dim ws As Worksheet
Set ws = Sheets("Raw Data")
Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws2.Name = "Sev 4+"
Dim copyRange As Range
Dim firstAddress As String
Row = 2
Dim i As Integer
For i = 1 To 1500
Set copyRange = ws.Range(Cells(i, 2), Cells(i, 2)).Find("feas", , , xlPart) 'The error pulls up at this line
If Not copyRange Is Nothing Then
Copied = ws.Range(Cells(i, 1), Cells(i, 17)).Value
ws2.Activate
ws2.Range(Cells(Row, 1), Cells(Row, 17)).Value = Copied
Row = Row + 1
ws.Activate
End If
Next i
End Sub
它在理论上应该考虑细胞中的B栏从1-1500和检查单元包含在里面“FEAS”。如果确实如此,它会将该行复制并粘贴到不同的工作表中。我知道IF语句是正确的,因为如果我用其他条件替换“IF”行(未找到),它就可以工作。
任何想法?
答
问题是因为行:
Set copyRange = ws.Range(Cells(i, 2), Cells(i, 2)).Find("feas", , , xlPart)
应该已经
Set copyRange = ws.Cells(i, 2).Find("feas", , , xlPart)
另一个问题是,我需要的“如果不是”语句之后激活工作表“WS”。
'ws.cells''ws2.cells'也许。是'ws.Range(Cells(i,2),Cells(i,2))。'不仅仅是'ws.range(cells(I,2))'这会搜索一个单元吗? –
一次,你在每次循环迭代开始时都要设置'Row = 2'。我想你会希望这发生在循环之外...... – Noceo
什么是错误? – Quint