我的循环似乎没有破坏。不知道我哪里错了。标签“ABC”中的单元格C5 = 44.5%。标签“ABC”中的单元格C4 = 32%。我必须在列E中列出32%至45%的百分比.SO E9 = 32%,E10 = 33%,E22 = 45%。我已将细胞E9与细胞C4连接起来。我的宏开始从单元格E10填充。标签“ABC”中的单元格C2 = 9
我的宏继续运行,不会停留在45%。
Sheets("ABC").Select
i = Worksheets("ABC").Range("C2").Value + 1
Do Until Cells(i, 5).Value <= Round(Worksheets("ABC").Range("C5").Value, 0)
Cells(i, 5).Value = Cells(i - 1, 5).Value + 0.01
i = i + 1
Loop
End Sub
答案 0 :(得分:1)
Cells(i - 1, 5).Value
正逐步增加+ 0.01
。
所以,Cells(i - 1, 5).Value
变大了。因此,我假设该行:
Do Until Cells(i, 5).Value <= Round(Worksheets("ABC").Range("C5").Value, 0)
应该是:
Do Until Cells(i, 5).Value >= Round(Worksheets("ABC").Range("C5").Value, 0)
此外,您忘记正确设置起点。如果我正确理解了帖子,那么起点应为Range("C4").Value
。
由于您使用的是>=
而非=
,因此无需进行舍入。因此,如果存在完全匹配并不重要。它只需要通过Range("C5")
中给出的阈值。
最后,Cells(i, 5).Value
在检查运行时始终为=""
(空),因为您的循环只会在检查后将Cells(i, 5).Value
设置为值。因此,您需要验证Do Until Cells(i - 1, 5).Value...
将所有这些结合在一起我猜你正在寻找以下内容:
Option Explicit
Sub tmpSO()
Dim i As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("ABC")
ws.Activate
i = ws.Range("C2").Value + 1
ws.Cells(i - 1, 5).Value2 = ws.Range("C4").Value2
Do Until ws.Cells(i - 1, 5).Value2 >= ws.Range("C5").Value2
ws.Cells(i, 5).Value = ws.Cells(i - 1, 5).Value + 0.01
i = i + 1
Loop
End Sub
答案 1 :(得分:0)
试试这个:
file_get_contents
答案 2 :(得分:0)
拉尔夫&amp; Pspl,
非常感谢!!您的建议为我提供了帮助和帮助。对于像我这样的新编码员来说,这是一个很好的论坛。再次感谢你的帮助。
For the benefit of the larger group, this is what I have finally used.
Sheets("ABC").Select
i = Worksheets("ABC").Range("C2").Value + 1
Do Until Cells(i - 1, 5).Value >= Worksheets("ABC").Range("C5").Value
Cells(i, 5).Value = Cells(i - 1, 5).Value + 0.01
i = i + 1
Loop
End Sub