循环时...错误

时间:2017-07-14 20:54:08

标签: vba excel-vba excel-2010 excel

我正在创建一个工具来根据几个输入修改数据表的行和列:Min,Step-up和Max。最小值(I9)链接到K6。我希望K6以下的每个单元格根据Step-up值(I10)增加,直到K中的值达到Max值(I11)。我无法根据最大值终止循环。

非常感谢任何帮助。

Sub Button3_Click()

Dim x As Integer

Dim z As Integer

Do
    Cells((8 + z), 11).Value = Cells(((7 + z)), 11).Value + Cells(10, 9).Value
        z = z + 1
        x = Cells((8 + z), 11).Value
        Loop While x < Cells(11, 9).Value


End Sub

Link to Spreadsheet Image

2 个答案:

答案 0 :(得分:1)

您在更改x的值后设置z的值。这意味着您始终检查空单元格中的值,最后一个单元格下方的一个单元格。这应该没问题:

Sub Button3_Click()

Dim x As Integer

Dim z As Integer

Do
    Cells((8 + z), 11).Value = Cells(((7 + z)), 11).Value + Cells(10, 9).Value
        x = Cells((8 + z), 11).Value
        z = z + 1
        Loop While x < Cells(11, 9).Value


End Sub

作为旁注,我不知道您是使用百分比还是只是一种格式,但请考虑使用Double来正确获取低于1的数字值。

我在测试时发现了另外一件事。出于某种原因,VBA认为1&lt; 100%。

答案 1 :(得分:0)

谢谢,修复工作正常。我注意到行和列中的值继续超过最大值,因为代码读取“停止一次超过最大值”的值。而不是在达到最大值之前停止。

我按如下方式对其进行了修改 - 为表格顶部的行维度添加了类似的代码段。

Sub Button3_Click()

Dim x As Double

Dim z As Double

Dim w As Double

Dim y As Double

Do
    Cells((8 + z), 11).Value = Cells((7 + z), 11).Value + Cells(10, 9).Value

        x = Cells((8 + z), 11).Value

        z = z + 1

        Loop While x <= Cells(11, 9).Value - Cells(10, 9).Value

Do
    Cells(6, (13 + y)).Value = Cells(6, (12 + y)).Value + Cells(10, 6).Value

        w = Cells(6, (13 + y)).Value

        y = y + 1

        Loop While w <= Cells(11, 6).Value - Cells(10, 6).Value


End Sub