VBA循环和if语句问题
我有以下代码的问题。 我希望列“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
表格的屏幕截图可以帮助我们更准确地分析问题。
首先, 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个“纵向”单元上testing了你的代码,并在report
表中find了5个。 我无法复制你的U6
站点。