vba - 如何将用户表单添加到此代码中而不是 msgbox?
问题描述
我目前有这个代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
For Each myCell In Range("G4:G160")
If (Not IsEmpty(myCell)) And myCell.Value <> 17521 And myCell.Value <> "" Then
DisplayUserForm
Exit Sub
End If
Next myCell
End Sub
并将其用于我的用户表单
Sub DisplayUserForm()
Dim form As New WarningBox
form.LOL.Caption = "INCORRECT!"
form.Show
Set form = Nothing
结束子
我还必须做什么才能出现而不是 msgbox 来提醒正在输入数据的人将显示“不正确!” 粗体并被红色包围。请参阅下面的图片,了解我要展示的内容
解决方案
Marc:如果您的“不正确”消息是您使用代码修改其标题的“LOL”对象,form.LOL.Caption = "INCORRECT!"
如果它是 TextBox 对象,它将是可编辑的。Saeed Sayyadipour 的示例显示了使用 Label 对象,而不是用户无法编辑的对象(我“同意”他关于“确定”按钮的建议)。
此外,由于事件通过定义“Target”范围对象告诉您哪些单元格发生了更改,您是否真的需要循环遍历所有 G4:G160,因为用户只更改了 Target 中的单元格?也许使用For Each MyCell in Intersect(Target,Range("G4:G160"))
,或者在适当的地方添加这些行:
Dim AffectedCells as Range
...
Set AffectedCells=Intersect(Target,Range("G4:G160"))
...
Set AffectedCells=Nothing
并将您的循环更改为:
For Each myCell in AffectedCells
...
Next myCell
如果更改的范围(目标)和您的 G4:G160 之间没有重叠,则不会发生任何事情并且您的代码会快速退出。
推荐阅读
- angular - Firebase + Capacitor Ionic Angular:@angular/fire 分析模块不起作用
- typescript - 如何根据 Typescript 中的字符串实例化一个类?
- php - 尽管有可用的语言环境,但 setlocale 失败 [已解决]
- python-3.x - 将对象(包含字符串和整数)Pandas 数据帧转换为 scipy 稀疏矩阵
- flutter - Flutter 为对象添加属性
- r - 使用 R 中的点和颜色为不同条件创建散点图
- java - 管理员更改用户密码后出现 IncorrectCredentialsException
- python - PyCharm 不强制从具有具体类型参数的通用抽象类继承
- node.js - 在 Node + Express API 中检测到的打开句柄会阻止 Jest 退出
- graphql - 文本字段与服务器的双向同步 - 快速输入