excel - 如何显示一个确认弹出窗口,允许使用宏编辑 Excel 文件的任何单元格中存在的特定文本?
问题描述
我要实现的是如果用户尝试修改包含文本“请勿编辑”的单元格,则显示弹出窗口。只有接受确认按钮,用户才能修改单元格值。
如何将此条件应用于可以增长的列,并且文本“不要编辑”的位置可以存在于第 4 列的任何单元格上?
我尝试使用此宏,它仅用于检测第 4 列的 D1、D2 和 D3 列单元格的值是否发生变化,然后显示一个弹出窗口。但我不知道如何显示一个弹出窗口来请求确认以允许在用户接受时编辑单元格,否则保留“不编辑”值。
这是我第一次尝试在用户更改值时显示消息:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then
If Target.Row = 1 Or Target.Row = 2 Or Target.Row = 3 Then
Beep
MsgBox "Do you really want to change it?", vbYesNo + vbQuestion
End If
End If
End Sub
这是我的工作表样本
解决方案
Consider the below modified version of your code which will throw the MsgBox
prompt when any cell is selected where column 4 in the selected row contains "don't edit".
它检查Column 4
(Column D)
所选单元格的行中是否包含"don't edit"
. 如果为 true,它会触发msgbox
提示您的用户。
该变量使用单击按钮的返回值Return
捕获用户的响应(是或否),然后如果返回则允许选择(并因此进行编辑),或者如果返回则选择单元格。Yes
A1
No
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Result As Long
If Selection.Count = 1 Then
If LCase(Me.Cells(target.Row, 4)) = "don't edit" Then
Beep
Result = MsgBox("Do you really want to change it?", vbYesNo + vbQuestion)
If Result = 6 Then '6 is the return value for the "Yes" button.
Else
Range("A1").Select
End If
End If
Else
'Do something if more than one cell is selected.
MsgBox "More than one cell is selected.", vbCritical, "You can't do that"
Range("A1").Select
End If
End Sub
注意:是一个占位符,表示用户单击时Range("A1").Select
要执行的任何操作。No
Msgbox
注意:您可以使用 MsgBox 返回常量而不是值,例如vbYes
or vbNo
- 请参阅下面的文档。
MsgBox 函数- 有关 MsgBox 函数的更多信息,包括按钮参数(哪些常量/值返回哪个按钮单击等),请参见此处
推荐阅读
- sql - SQL 中基于所选选项的条件 Where 子句
- docker - Docker 中的配置 Nanoc 错误面临“Nanoc::Core::ConfigLoader::NoConfigFileFoundError:未找到配置文件”
- python - KML 将数据扩展到叶标记弹出窗口
- docker - 如何使用 --ulimit 选项在 docker 容器中将 POSIX 消息队列限制设置为无限制
- android - recyclerview中的nestedrecyclerview不滚动android
- json - 在 Swift 中解析 json 后返回结构
- jms - ActiveMQ 未确认消息会发生什么
- r - 带类的打印功能
- javascript - 如何从日期格式 YYYY-MM-DD 中检查两个月是否相等?
- elasticsearch - 没有为建议注册的查询