如何使用循环更新行?

我有这个代码,在一行中创build一个循环,直到特定的单元格值达到0.而且正如你所看到的,如果该行的值是<比删除,toremove成为它自己和行的值之间的差异。

我需要做的是将该行的值设置为0,然后从下一行中减去删除和该行之间的差异。

我在VB和VBA中超级生锈,所以我有点失落。 如果有人能够帮助我,或者指引我朝着正确的方向前进,那么我将不胜感激。

Set ws = Sheets("Carbonação") Set ws2 = Sheets("STOCK Membranas") Set ws3 = Sheets("STOCK Sticks") LR = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 CR = ws3.Range("A" & Rows.Count).End(xlUp).Row PR = ws2.Range("A" & Rows.Count).End(xlUp).Row - 1 CR2 = ws2.Range("A" & Rows.Count).End(xlUp).Row toremove = TextBox28.Text ws.Range("A" & LR).Value = Int((99999999 - 10000000 + 1) * Rnd + 10000000) 'ID Carbonação ws.Range("B" & LR).Value = ComboBox1.Text 'Fabricante ws.Range("C" & LR).Value = TextBox25.Text 'Lote Membranas ws.Range("D" & LR).Value = ws3.Range("A" & CR) 'ID Sticks ws.Range("E" & LR).Value = TextBox2.Text 'Nº Carbonação ws.Range("F" & LR).Value = TextBox3.Text 'Densidade Total / Carbonação ws.Range("G" & LR).Value = TextBox1.Text 'TETRA ws.Range("H" & LR).Value = Format(Now(), "dd/mm/yyyy hh:mm") 'Data / Hora introdução Do While toremove > 0 If ws2.Range("H" & PR).Value < toremove Then toremove = toremove - ws2.Range("H" & PR).Value ws2.Range("H" & PR).Value = 0 ws2.Range("H" & PR) = ws2.Range("H" & PR) + 1 Else ws2.Range("H" & PR).Value = ws2.Range("H" & PR).Value - toremove toremove = 0 End If Loop 

原始版本

我只看着while循环。 只要看看这两条线。

  ws2.Range("H" & PR).Value = 0 `1st ws2.Range("H" & PR) = ws2.Range("H" & PR) + 1 '2nd 

当你调用一个Range Object ,默认的属性是.Value 。 因此,第二行与ws2.Range("H" & PR).Value = ws2.Range("H" & PR).Value + 1 。 显然,这不是你想要的。

你唯一要纠正的是改变上面的第二行。 这是while循环的编辑版本。

编辑版本

 Do While toremove > 0 If ws2.Range("H" & PR).Value < toremove Then toremove = toremove - ws2.Range("H" & PR).Value ws2.Range("H" & PR).Value = 0 PR = PR + 1 Else ws2.Range("H" & PR).Value = ws2.Range("H" & PR).Value - toremove toremove = 0 End If Loop 

第一次进入while循环时,假设PR = 10 ,并进入if语句的真实部分,所以它检查范围H10。 当它离开if语句时,PR现在是11,因为我们在PR中加1。 所以下一次启动while循环时,它将检查范围H11而不是H10。