使用按钮从单元格值减去1时,VBA最小值为0 [零]

时间:2019-10-22 00:59:31

标签: excel vba

我有一个非常基本的代码,该代码分配给从单元格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

1 个答案:

答案 0 :(得分:0)

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