做一个没有“预定义”单元的循环(即只是“B”而不是“b5”)

这是我的问题:我试图运行一个特定的一组数据,在每个更新的金额变化的循环。 如果分数大于0,那么它将在表格数据的下一个可用空行中的A,B和C列中的特定行剪切/粘贴。 这是我到现在为止:

Sub whatever() Dim score As Integer, sStart As Integer, sTeller As Integer, lcount As Integer, result As String sStart = Sheets("Packed").Range("F1").Value sTeller = Sheets("Packed").Range("E1").Value lcount = sStart score = Range("B& lcount").Value Do While lcount < sTeller Sheets("Packed").Select If score > 0 Then _ Range("A&lcount:C&lcount").Select Selection.Cut Sheets("data").Select Range("A5").Select Selection.End(xlDown).Select Selection.Offset(1, 0).Select ActiveSheet.Paste lcount = lcount + 1 Loop End Sub 

我想要的是,VBA将“lcount”添加到rowlabel,然后循环它在B有数据的每一行。 提前致谢 :)

在此代码中引用的string连接时,包含太多的“部分”:

 If score > 0 Then _ Range("A&lcount:C&lcount").Select 

这里有一些build议:

 If score > 0 Then _ Range("A" & lcount & ":C" & lcount).Select If score > 0 Then _ Cells(lcount, "A").Resize(1, 3).Select 

您可能还需要查看如何避免使用Excel中的selectVBAmacros中详细介绍的方法。

在你的情况不需要循环,请参阅下面的更新代码

 Sub whatever() Dim score&, sStart&, sTeller&, lcount& lcount = Sheets("data").Cells(Rows.Count, "A").End(xlUp).Row + 1 With Sheets("Packed") sStart = .Range("F1").Value sTeller = .Range("E1").Value score = .Range("B" & sStart).Value End With If score > 0 Then Sheets("Packed").Range("A" & sStart & ":C" & sTeller - 1).Cut Sheets("data").Activate: Range("A" & lcount).Insert xlDown End If End Sub