首页 > 解决方案 > 使用按钮从单元格值减去 1 时,VBA 最小值为 0 [零]

问题描述

我有一个非常基本的代码,它分配给从单元格 H6 中的值减去 1 的形状。我无法弄清楚的是如何阻止单元格值低于 0。

我已经尝试了以下 -1 工作的地方,但由于最小值部分,代码一直出错

Sub RoundedRectangle27_Click()

    Cells(6, 8).Value = Cells(6, 8).Value - 1
    IF cell(H6, <=0 Then = 0)

End Sub

Sub RoundedRectangle27_Click()

    Cells(6, 8).Value = Cells(6, 8).Value - 1
    IF cell(H6, <=0 Then = 0)

End Sub

我不希望单元格值低于 0,因为我有一个 VLOOKUP 链接到它。随后我还需要该值不大于 8

标签: excelvba

解决方案


if应该先出现:

sub RoundedRectangle27_Click()
    if Cells(6, 8).Value > 0 then
        Cells(6, 8).Value = Cells(6, 8).Value - 1
    end if
end sub

这样一来,无论你如何用力或快速地敲击RoundedRectangle27,它都不会变成负数。

您可以使用类似的方法来防止增加到 8 以上,但您可能需要考虑重构以供重用:

function AdjustBy(value, delta, clampMin, clampMax)
    if value + delta > clampMax then
        AdjustBy = clampMax
    else
        if value + delta < clampMin then
            AdjustBy = clampMin
        else
            AdjustBy = value + delta
        end if
    end if
end function

sub DecreaseButton_Click()
    Cells(6, 8).Value = AdjustBy(Cells(6, 8).Value, -1, 0, 8)
end sub

sub IncreaseButton_Click()
    Cells(6, 8).Value = AdjustBy(Cells(6, 8).Value, 1, 0, 8)
end sub

sub DoubleButton_Click()
    Cells(6, 8).Value = AdjustBy(Cells(6, 8).Value, Cells(6, 8).Value, 0, 8)
end sub

推荐阅读