我遇到以下代码的问题。 我希望每个单元格的值都为" long"在专栏#" U"要复制到新工作表中。 但我开发的代码只检索第一个结果。它确实在" 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 ()
答案 0 :(得分:2)
我在这行代码中发现了一个错误:
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
表的屏幕截图有助于我们更准确地分析问题。
答案 1 :(得分:1)
首先,End Sub
不应该有尾随括号。当我将其复制到模块中时,它会立即突出显示错误。
您的循环使用ActiveCell.Offset(1, 0).Select
两次:
If ActiveCell.Value = "long" Then
ActiveCell.EntireRow.Select
Selection.Copy
ActiveCell.Offset(1, 0).Select 'first Offset
Sheets("report").Select
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("TLM").Select
ActiveCell.Offset(1, 0).Select 'second Offset
Else
因此,您只需查看每个"long"
后的每隔一行。
我测试了你的代码在10岁的#34; long"在report
表单中找回5个单元格。我无法重现你的U6
停止。