excel - 使用 IF THEN 语句使用 VBA 创建加号和减号按钮

标签 excel 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

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

最佳答案

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

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

它应该可以工作,增加 L10 的值与 1。
然后,考虑 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

关于excel - 使用 IF THEN 语句使用 VBA 创建加号和减号按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55464739/

相关文章:

excel - 从另一个 Sub 调用/引用命名范围

excel - 使用 Excel VBA 进行网页抓取

vba - CheckSpelling 函数中的类型不匹配

从 MySql 到 Excel 的 PHP select 语句。将日期格式化为 YYYYMMDD

vba - 组合来自 2 个单元格的字符串,添加连字符并使用 DDEPoke 发送

arrays - 在 VBA 中合并多个数组

sql - 通过 VBA/ADO 通过 SQL 更新 SharePoint 列表中的记录?

VBA 卡在 ie.busy 和 readystate 检查

excel - 无法将类型 'Microsoft.Office.Interop.Excel.ApplicationClass' 的 COM 对象转换为接口(interface)类型 'Microsoft.Office.Interop.Excel._Application'

excel - CSV 文件/Excel 中的日期/时间格式