今日学习目标

  • 掌握用户窗体设计
  • 实现数据输入验证
  • 完成菜单和工具栏集成

知识点

1. 用户窗体设计原则

  • 布局清晰:控件对齐、间距一致
  • 功能明确:标签提示清晰
  • 交互友好:即时反馈、错误提示

2. 数据验证技术

  • 输入格式验证
  • 必填字段检查
  • 数值范围验证
  • 自定义验证规则

3. 界面集成

  • 自定义功能区
  • 右键菜单扩展
  • 快捷键绑定

今日代码

vba
' 主窗体初始化 Private Sub UserForm_Initialize() ' 加载部门列表 Dim deptList As Collection Set deptList = GetDepartmentList() Dim dept As Variant For Each dept In deptList Me.cmbDepartment.AddItem dept Next dept ' 设置默认日期 Me.txtDate.Value = Format(Date, "yyyy-mm-dd") End Sub ' 提交按钮事件 Private Sub btnSubmit_Click() ' 数据验证 If Not ValidateInput() Then Exit Sub ' 保存数据 Call SaveData MsgBox "保存成功!", vbInformation Me.Hide End Sub ' 数据验证函数 Private Function ValidateInput() As Boolean ValidateInput = True ' 必填字段验证 If Trim(Me.txtName.Value) = "" Then MsgBox "请输入姓名!", vbExclamation Me.txtName.SetFocus ValidateInput = False Exit Function End If ' 数值范围验证 If Not IsNumeric(Me.txtAmount.Value) Then MsgBox "金额必须为数字!", vbExclamation Me.txtAmount.SetFocus ValidateInput = False Exit Function End If If CDbl(Me.txtAmount.Value) <= 0 Then MsgBox "金额必须大于0!", vbExclamation Me.txtAmount.SetFocus ValidateInput = False Exit Function End If End Function ' 保存数据 Private Sub SaveData() Dim ws As Worksheet Dim lastRow As Long Set ws = Worksheets("数据") lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 ws.Cells(lastRow, 1).Value = Me.txtName.Value ws.Cells(lastRow, 2).Value = Me.cmbDepartment.Value ws.Cells(lastRow, 3).Value = Me.txtAmount.Value ws.Cells(lastRow, 4).Value = CDate(Me.txtDate.Value) End Sub

练习题

  1. 创建带下拉选择的部门表单
  2. 实现实时输入验证(失去焦点时)
  3. 添加表单重置和取消功能

参考解答

1. 使用ComboBox,在Initialize事件中用AddItem填充选项。 2. 使用各控件的Exit或Change事件触发验证函数。 3. 添加btnReset_Click调用Unload Me后重新Show。


由在线工具箱(www.vba.net)整理制作