excel - VBA 循环和 if 语句问题

标签 excel vba

我对以下代码有疑问。
我希望将“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/

相关文章:

vba - 禁用 Excel 中的功能区按钮

regex - 从一系列单元格中提取多个字符串

excel - 在多个后续范围内查找值和 .filldown?

vba - 如何查找范围是否包含VBA中的合并单元格

mysql - Null VBA Excel 的使用无效

mysql - 在 Excel 上分析 MySQL 数据

excel - 查找并复制列中的(多个)值

Excel VBA 如果单元格(x,J)。值(value)=值(value)

vba - 如何在VBA中合并两个集合?

excel - 进度指示器,在vba中变得没有响应