首先推荐一本VBA入门书籍:《别怕,EXCEL VBA其实很简单》,这个例子是书上关于窗体的。
从今年5月份接触VBA开始,最感兴趣的便是窗体与控件,因为感觉很神奇。然而excel的窗体感觉很简陋,期间我也接触了一点access,access的窗体感觉要现代化一点,所以迟迟没有动excel的窗体。这完全是按主观意愿出发的。
由于工作需要,平时接触excel的时间要远远大于access,而且在数据处理方面,excel要更灵活一点(比如复制粘贴以及函数运用),而且工作中没见过人用access,所以就优先学习了excel vba,等vba能在excel中灵活运用后,再回头看access,当然也推荐大家了解一点access这种关系型数据库。
言归正传,这个窗体是个简单的输入框,用了工作表激活事件,当激活(打开)工作表时激活窗体加载事件,窗体相当于画布,用标签,按钮,组合框,文本框这些控件画成。
所有窗体内控件代码都在窗体内代码完成,当加载窗体时,将组合框也就是性别输入的的内容加入组合框的列表中,输入内容,单击确定时,窗体内容输入到对应单元格,然后清空窗体内控件的内容,当单击退出时退出窗体。
代码如下:
Private Sub Worksheet_Activate()
Load UserForm1'加载窗体
'UserForm1.Show vbModal 显示窗体模式则单元格不可编辑
UserForm1.Show vbModeless '显示无窗体模式
Range("a1") = "姓名"
Range("b1") = "性别"
Range("c1") = "出生年月"
End Sub
'以下代码在窗体鼠标右键单击查看代码中输入
Private Sub UserForm_Initialize()'在窗体加载过程中运行
性别.List = Array("男", "女")
End Sub
Private Sub 确定_Click()
If 姓名.Value = "" Or 性别.Value = "" Or 出生年月.Value = "" Then
MsgBox "信息输入不完整,请重新输入!", vbExclamation, "错误提示"
Exit Sub
End If
Dim xrow As Integer
xrow = Range("a1").CurrentRegion.Rows.Count + 1'这句用法头一次见
Cells(xrow, "a") = 姓名.Value
Cells(xrow, "b") = 性别.Value
Cells(xrow, "c") = 出生年月.Value
姓名.Value = ""
性别.Value = ""
出生年月.Value = ""
End Sub
Private Sub 退出_Click()
Unload Me
End Sub