叮!恭喜您,VBA“新手村”七日游正式毕业!啃了前面7篇基础干货,想必你已经内力大增,是时候下山闯荡江湖,搞点大事情了。软件嘛,总得有个界面,就像咱们大侠出门不能光膀子,得穿件像样的衣服——是时候给你的代码“裁件新衣裳”了!
在VBA里创建界面非常简单,只需要点击VBE主菜单“插入”–>’用户窗体’,一个界面就生成了。
有了UserForm1这个对象后,就可以在模块1中写入代码,先写最简单的1行代码:
Sub main() UserForm1.Show 0End Sub这行代码的意思是调用UserForm1这个对象的Show方法,这个方法要求输入一个参数,我们输入一个参数0,这个参数代表窗体的显示模式,这个参数是1的时候,在UserForm1窗体显示时,只能操作这个窗体上的内容,而不能操作其它窗体(包括主程序窗体)中的内容。现在用的参数是0,所以在UserForm1窗体显示时,可以操作其它窗体上的内容。这时候运行main这个子过程,就显示出UserForm1窗体了。
这显示了一个空的界面,里面没有任何内容。下面继续给这个窗体添加具体内容。先在资源管理器中双击窗体UserForm1,然后点击VBE主菜单的“视图”–>’工具箱’调出工具箱。
在弹出的“工具箱”里,有各种各样的图标,每个图标都对应一个“控件”
最常用的控件是“标签”、“文本框”、“按钮”,把这些控件从工具箱里拖放到窗体中去,然后调整它们的位置和大小,这里拖放3个文本框,2个标签和1个按钮到窗体UserForm1中。

再修改一下main子过程里的代码,给UserForm1里的控件属性赋值:
Sub main()UserForm1.Label1 = '+'UserForm1.Label2 = '='UserForm1.CommandButton1.Caption = '确定'UserForm1.Show 0End Sub
上面的代码意思是,把UserForm1里的Label1控件的显示文本变成“+”号,Label2控件的显示文本变成“=”,按钮CommandButton1的标题(Caption)变成’确定’,前面我们是通过修改属性窗口里的属性来修改Caption的值,现在通过代码来修改,效果是一样的。运行上面的程序,就会显示出一个含有内容的窗体:
我们的本意是要设计一款加法计算器,在文本框里输入数字,然后点击确定按钮就计算出结果。但是现在输入数字后,点击确定没有任何反应。这是因为按钮还没有绑定任何子过程或函数。回到VBE的界面,双击UserForm1窗体,然后再双击CommandButton1控件按钮。这时候VBE就在代码编辑区自动创建了一个子过程CommandButton1_Click(),这个子过程还没有任何代码。
下面要给CommandButton1_Click()子过程添加代码:
Private Sub CommandButton1_Click() Dim a As Double Dim b As Double a = CDbl(TextBox1.Text) b = CDbl(TextBox2.Text) TextBox3.Text = CStr(a + b)End Sub这段代码的意思是先定义2个双精度的小数a和b,分别给a和b赋值,赋的值分别是由文本框里的文本通过CDbl内部函数转成的双精度小数,然后把a和b相加,得到的值再通过Cstr内部函数转成字符串,赋值给文本框TextBox3的Text属性,这样就显示出最终相加的值了。
调试这个程序的时候,不能直接在窗体UserForm1打开的界面运行,而是要双击模块1中,回到main子过程,从这个子过程开始运行。