1

如果数量等于 0,我想复制名称和描述,这样我就可以订购我没有的水果。每当看到“STOP”时,它就会从 A2 开始,然后停止。

在此处输入图像描述

我有代码: 在此处输入图像描述

但是,代码不会自行停止,我必须在它运行时中断它。当我只需要前 2 列时,它会复制整个行之间的所有空行。我的问题是 1. 如何让程序知道在 A 列看到“STOP”时它应该停止?只复制一个空行?并且只复制前两列(或我想要的列数)?

4

1 回答 1

2
  1. 停止循环
    问题出在您的While子句中:您正在将字符串的长度与字符串进行比较-永远不会TRUE

  2. 仅复制非空行
    测试有效数据

  3. 复制所需的列数
    参见示例代码

FWIW 您的代码可以做一些改进 - 这是我对您的要求的看法

Sub CopySample()
    Dim shSrc As Worksheet
    Dim shDst As Worksheet
    Dim rSrc As Range
    Dim rDst As Range
    Dim numCol As Long ' number of columns to copy

    On Error GoTo EH

    numCol = 2

    ' select source and dest sheets
    Set shSrc = ActiveWorkbook.Worksheets("Sheet1")
    Set shDst = ActiveWorkbook.Worksheets("Sheet2")

    ' Select initial rows
    Set rSrc = shSrc.Cells(2, 1)
    Set rDst = shDst.Cells(23, 1)

    ' loop over source
    Do While rSrc <> "STOP"
        ' Test Source row, Qty = 0 and Name is not blank
        With rSrc
            If .Offset(0, 2) = 0 And .Value <> "" Then
                'Copy
                .Resize(1, numCol).Copy rDst.Resize(1, numCol)
                Set rDst = rDst.Offset(1, 0)
            End If
        End With
        Set rSrc = rSrc.Offset(1, 0)
    Loop
Exit Sub
EH:
    MsgBox "Error " & Err.Description
End Sub

请注意,对于大量数据,在一个范围内循环可能会很慢。在这种情况下可能没问题,但有一些方法可以提高速度。

于 2012-05-19T22:12:17.520 回答