Excel VBA工作薄 6.3 多条件的对话窗体 让代码通用性更高
前景提要(
昨天我们学习了通过msgbox实现一个简单的对话窗体的功能,让使用者在使用脚本的过程中,能够根据自己的实际需要来进行操作,避免出现脚本被写死的情况,影响了脚本的适用范围,这样的情况其实在我们的日常工作中是经常出现的,我们在写脚本/代码的过程中,都需要从使用者的角度出发,提升代码的通用性,灵活性,上节我们留下了一个悬念,如果我们要运行的是四则运算,而不仅仅是加法和减法这两种,那么要如何实现呢?
场景模拟
假设我们现在要做一个简单的计算,方法不确定
我们要执行的运算是四则运算,上节我们仅仅是通过msgbox来实现了简单的加法和减法,而四则运算一下子又增加了2个选项,我们知道msgbox最多能够提供2~3个选项卡,那么这样的情况下,还可以用类似msgbox这样的对话框来执行交互/对话啊?自然你可以,来,看代码
代码区
Sub jisuan()
Dim result$
Cells(7, 4) = ""
Cells(7, "g") = ""
result = Application.InputBox("请选择要要进行的运算" & Chr(10) & "1.加分" & Chr(10) & "2.减法" & Chr(10) & "3.乘法" & Chr(10) & "4.除法", "运算方法的选择", , , , , , 1)
If result = 1 Then
Cells(7, 4) = "+"
Cells(7, "g") = Cells(7, 3) + Cells(7, 5)
ElseIf result = 2 Then
Cells(7, 4) = "-"
Cells(7, "g") = Cells(7, 3) - Cells(7, 5)
ElseIf result = 3 Then
Cells(7, 4) = "*"
Cells(7, "g") = Cells(7, 3) * Cells(7, 5)
ElseIf result = 4 Then
Cells(7, 4) = "/"
Cells(7, "g") = Cells(7, 3) / Cells(7, 5)
Else
Cells(7, 4) = ""
Cells(7, "g") = ""
Exit Sub
End If
End Sub
来看看效果,相对于之前的代码,今天更改了一个不足,在按下按钮的时候,将运算符号和运算结果的这两个单元格内容清空,这样体验感会更好
我们做下加法
试着来下乘法,输入3,看看
结果也是正确的
代码分析
result = Application.InputBox("请选择要要进行的运算" & Chr(10) & "1.加分" & Chr(10) & "2.减法" & Chr(10) & "3.乘法" & Chr(10) & "4.除法", "运算方法的选择", , , , , , 1)
今天的关键代码就是这一句话
在之前学习的时候,我们就知道msgbox的选择按钮是有限制的,那么我们今天的多选项明显已经超过了msgbox的容量了,所以我们采用之前学过的另外一种方法InputBox来实现这种简单的交互/对话功能,这里的选项不受限制,如果你需要你可以继续写下去
这里插入一个新的玩法,就是换行符的写法Chr(10),代表的就是换行,如果没有这个换行符的,所有的字段都合并在一起,展示效果不好,有了换行符之后
有了换行符之后,分段展示,效果更佳
相对于msgbox弹窗的对话框,inputbox所展示的对话框适用范围更加广一些,也更加的灵活多变,同时可以限制对方输入内容,比方说我这里就是只需要使用者输入1,2,4,3这几个数字,如果对方输入了中文,或者英文,看看结果是什么
这也是inputbox的一个优势之一。