我对以下代码有疑问。
我希望将“U”列中值为“long”的每个单元格复制到新工作表中。
但我开发的代码只检索第一个结果。它确实在“U6”之后停止。
你能帮我么?
Sub reportcrea ()
Worksheets("TLM").Select
ActiveSheet.Range("U3").Select
Do
If ActiveCell.Value = "long" Then
ActiveCell.EntireRow.Select
Selection.Copy
Sheets("report").Select
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Else
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell.Offset(1, 0))
End sub ()
最佳答案
我在这一行的代码中发现了一个错误:
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Offset
接受两个参数,所以它应该是这样的:Range("A" & Rows.Count).End(xlUp).Offset(1,0).Select
此外,您应该在粘贴剪贴板中的内容后立即取消 CutCopy 模式:
ActiveSheet.Paste 'Paste is done here
Application.CutCopyMode = False 'This is a good practice
看看是否有帮助。另外,
TLM
的截图表将帮助我们更准确地分析问题。
关于excel - VBA 循环和 if 语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25241998/