如果找到空白单元格,我很难找到运行循环的解决方案。这是我第一次使用VBA (希望不是最后一次),所以提前感谢您的帮助和建议。
基本上,对于一列值(“Unit”),我希望将每个值复制并粘贴到输入框中,复制结果并粘贴到其他地方,然后对下一个值重复,直到“Unit”列中的下一个单元格为空。
对于如何在这种情况下提供任何建议,我们将不胜感激。我试过各种各样的“在.”还有“如果.”等等,但无法破坏结构。
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
发布于 2017-10-10 04:04:38
您可以使用.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
当单元格(i,1)为空时,条件变为False,因此循环停止。
记住,当同时使用For循环和while循环时,始终要注意,特别是使用相同的变量i来控制循环。
https://stackoverflow.com/questions/46657645
复制相似问题