如果找到空白单元格,我很难找到运行循环的解决方案。这是我第一次使用VBA(但希望不是最后一次),所以请提前感谢您的帮助和建议。
基本上,对于一列值("单位"),我想将每个值复制并粘贴到输入框中,复制结果并粘贴到其他位置,然后重复下一个值直到下一个单元格在"单位"列是空白的。
如何处理这种情况的任何建议将不胜感激。我尝试了各种各样的"同时..."和"如果......"等但不能破坏结构。
Sub ResultsTable()
Application.ScreenUpdating = False
Dim UnitRows As Integer
UnitRows = Range("Units").Rows.Count
Do While Range("Units").Cells(i, 1).Value <> ""
i = i + 1
Range("Units").Cells(i, 1).Copy
Range("Input").PasteSpecial xlPasteValues
Range("ABBA").Copy
Range("ABBAO").Cells(i, 1).PasteSpecial xlPasteValues
Range("BABBA").Copy
Range("BABBAO").Cells(i, 1).PasteSpecial xlPasteValues
Range("CABBA").Copy
Range("CABBAO").Cells(i, 1).PasteSpecial xlPasteValues
Range("DABBA").Copy
Range("DABBAO").Cells(i, 1).PasteSpecial xlPasteValues
Range("Units").Copy
Range("UnitsOutput").PasteSpecial xlPasteValues
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
您可以使用.Value属性来检查它是否为空:
Range("Units").Cells(i, 1).Value <> ""
当单元格为空时返回False。
我不确定您是否需要代码跳过循环或终止整个循环,如果它遇到空白。 如果您只需要跳过当前循环,请尝试使用if语句在for循环中。
For i = 1 To UnitRows
If Range("Units").Cells(i, 1).Value <> "" Then
'your code here
End If
Next i
当细胞(i,1)空白时,marco会进入下一个i,直到它到达UnitRows。
如果要终止循环,请尝试Do-while循环。
Do While Range("Units").Cells(i, 1).Value <> ""
'your code here
i = i + 1
Loop
当Cells(i,1)为空时,条件变为False,因此循环停止。
请记住,同时使用For循环和While循环时要始终注意,尤其是使用相同的变量i来控制循环。