Day36 - 小型应用系统(1)
今日学习目标
- 掌握用户窗体设计
- 实现数据输入验证
- 完成菜单和工具栏集成
知识点
### 1. 用户窗体设计原则
- 布局清晰:控件对齐、间距一致
- 功能明确:标签提示清晰
- 交互友好:即时反馈、错误提示
### 2. 数据验证技术
- 输入格式验证
- 必填字段检查
- 数值范围验证
- 自定义验证规则
### 3. 界面集成
- 自定义功能区
- 右键菜单扩展
- 快捷键绑定
今日代码
' 主窗体初始化
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练习题
- 创建带下拉选择的部门表单
- 实现实时输入验证(失去焦点时)
- 添加表单重置和取消功能