首页 > 解决方案 > 使用 IF THEN 语句使用 VBA 创建加号和减号按钮

问题描述

我意识到我可能会在这里陷入困境,但值得一试。

我正在尝试在 excel 中创建一组加减号按钮,并根据先前选择的标准将其应用于单独工作表上的不同单元格。

我已经到处找了,一无所获。

这是我的例子...

我有一个人员配备模型,我想预测当我增加或减少员工时会发生什么。我将员工分为两种类型,销售和非销售。每种类型都有不同的标题。

我计划将我的高级销售助理人数减少 2 个 FTE,并将我的销售助理 FTE 减少 1 个。

我希望能够使用数据验证列表选择“高级销售助理”,然后使用减法按钮减少 3。然后我想切换我的数据验证列表以选择“销售助理”并使用相同的减法按钮将该计数减 1。

我试图使用 Excel VBA If THEN 语句,但它们似乎不起作用。我将提供一个我认为可以在下面工作的代码示例。

Sub Plus()

   If Range("A1")= "Sales Associate" Then
       Range("L10").Value = Range("L10").Value + 1        
   End If

End Sub

我知道这段代码不会像我要求的那样考虑多个实例,但它甚至没有在测试中与一个实例一起工作。请让我知道这是否可能!提前致谢!

标签: excelvba

解决方案


从代码中最简单和最小的部分开始,并尝试使其工作。比如像这样的:

Sub Plus()
    Range("L10").Value = Range("L10").Value + 1
End Sub

它应该可以工作,增加L101 的值。然后,考虑If函数。可能最后有一些空间或其他东西。因此,尝试一个简单的 if 是这样的:

Sub Plus()    
   If Trim(Range("A1")) = "s" Then
       Range("L10").Value = Range("L10").Value + 1
   End If    
End Sub

Trim()将从检查字符串的左侧和右侧去除空格,并将内部空格减少到不超过 1。作为进一步的检查,它可能是一个更好的解决方案,LCase()因为“销售助理”是一个不同的字符串“销售助理”和错误发生:

Sub Plus()

   If LCase(Trim(Range("A1"))) = "sales associate" Then
       Range("L10").Value = Range("L10").Value + 1
   End If

End Sub

最后,如果代码在一个模块中,那么 ActiveSheet 也应该被引用。看看前面的点.Range()

Sub Plus()

    With Worksheets("SomeSheet")
        If LCase(Trim(.Range("A1"))) = "sales associate" Then
            .Range("L10").Value = .Range("L10").Value + 1
        End If
   End With

End Sub

推荐阅读