EP01. “Userform and Ranges 用户表单接收范围”
🔒 登录后可标记已读- Userform(用户表单)是一个独立的弹窗界面,能放文本框、按钮等各种控件
- 讲怎么用 RefEdit 控件让使用者在表单上选一个范围
- 再用代码找出这个范围里的最小值并标红
- 前置知识:基本的 For Each 循环,是 Userform 系列的入门篇
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
建立表单
- 打开 VBA 编辑器,插入一个 Userform
- 放一个 Label(标签)、一个 RefEdit(范围选取框)控件、两个命令按钮
[截图:VBA 编辑器里 Userform 设计视图,工具箱里的 Label、RefEdit、CommandButton 控件已经拖放到表单上的布局]
打开表单
在工作表按钮上写:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
表单打开时的初始化
Private Sub UserForm_Initialize()
Sheet1.Cells.Font.Color = vbBlack
UserForm1.RefEdit1.Text = Selection.Address
End Sub
打开表单时,先把整张表的字体颜色重置成黑色(清掉上次的标记),并把 RefEdit 预填成使用者当前选中的范围地址。
Go 按钮:找出最小值并标红
Private Sub CommandButton1_Click()
Dim addr As String, rng, cell As Range, minimum As Double
addr = RefEdit1.Value
Set rng = Range(addr)
minimum = WorksheetFunction.Min(rng)
For Each cell In rng
If cell.Value = minimum Then cell.Font.Color = vbRed
Next cell
End Sub
[截图:运行时的表单效果,RefEdit 框里显示选中的范围地址,点击 Go 后工作表上该范围里最小值的字体变红]
Cancel 按钮:关闭表单
Private Sub CommandButton2_Click()
Unload Me
End Sub
学完你会
- ✅ 用
UserForm1.Show打开表单,Unload Me关闭表单 - ✅ 用 RefEdit 控件让使用者在表单上直接选取一个 Range
- ✅ 用
UserForm_Initialize事件在表单打开时预先设置好初始状态
常见错误
- 表单初始化时忘记重置颜色,上次标记的红色残留在画面上
- RefEdit1.Value 读到的是文字地址,忘记要用
Range(addr)转换成真正的 Range 对象才能操作 - 两个按钮都叫
CommandButton1_Click,需要确认对应的是各自控件的事件,不要弄混
Sources
Blog / Website: