我有以下代码给出了运行时错误13,在行上键入不匹配"如果ws1.cells(i,13)="是"然后" 该列(列M)包含空白单元格,或者"是"。 我试过重新定义"我"作为字符串,它没有改变任何东西。 目标是每一行都有"是"在M列中,整行被复制到名为"输出"的第二张纸上。 任何有关此错误的帮助都将非常感激,也欢迎其他可能符合我目标的想法。 谢谢!
Sub Sadface()
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Trades")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Output")
For i = 2 To ws1.Range("M65536").End(xlUp).Row
If ws1.Cells(i, 13) = "Yes" Then
ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
End If
Next i
End Sub
答案 0 :(得分:1)
听起来好像您已手动从外部数据中删除了错误。如果将此数据带入工作簿是一项定期重复的操作,您可能希望将其自动化。
Sub Happyface()
Dim i As Long
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Trades")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Output")
With ws1.Columns(13)
On Error Resume Next
.SpecialCells(xlCellTypeConstants, xlErrors).ClearContents
.SpecialCells(xlCellTypeFormulas, xlErrors).ClearContents
Err.Clear
On Error GoTo 0
End With
With ws1
For i = 2 To .Cells(Rows.Count, "M").End(xlUp).Row
If .Cells(i, 13) = "Yes" Then
.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
End If
Next i
End With
End Sub
尽管我试图避免使用On Error Resume Next¹,但当你不确定它们是否存在时,这是处理Range.SpecialCells method的最便捷的方法。
¹打破某些东西只是为了看它是否存在的概念对我来说似乎总是错误的。
答案 1 :(得分:-1)
试试这个,希望有所帮助
Sub justforyou()
x = 2
y = 2 'this will start the pasting process in the row 2, if you need to change it, you can change it
Sheets("Output").Select
Do While x <= 65536
If Sheets("Trades").Cells(x, 13).Value = "Yes" Then
Sheets("Trades").Rows(x).Copy
Cells(y, 1).Select
ActiveSheet.Paste
y = y + 1
End If
x = x + 1
Loop
End Sub