在Excel VBA中执行直到循环

时间:2017-03-14 15:19:24

标签: excel excel-vba vba

我的循环似乎没有破坏。不知道我哪里错了。标签“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

3 个答案:

答案 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