如果数量等于 0,我想复制名称和描述,这样我就可以订购我没有的水果。每当看到“STOP”时,它就会从 A2 开始,然后停止。
我有代码:
但是,代码不会自行停止,我必须在它运行时中断它。当我只需要前 2 列时,它会复制整个行之间的所有空行。我的问题是 1. 如何让程序知道在 A 列看到“STOP”时它应该停止?只复制一个空行?并且只复制前两列(或我想要的列数)?
停止循环
问题出在您的While
子句中:您正在将字符串的长度与字符串进行比较-永远不会TRUE
仅复制非空行
测试有效数据
复制所需的列数
参见示例代码
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
请注意,对于大量数据,在一个范围内循环可能会很慢。在这种情况下可能没问题,但有一些方法可以提高速度。