【发布时间】:2020-09-27 02:06:09
【问题描述】:
我不精通 vba,所以我认为这是最好的提问地点。我的目标是在特定单元格不等于“X”值时出现一个 msgbox。这是我下面的代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myCell As Range
For Each myCell In Range("G4:G160")
If myCell.Value <> 17521 Then
MsgBox "INCORRECT SKU RECHECK PALLET AND INFORM SUPERVISOR"
Exit Sub
End If
Next myCell
End Sub
单元格值取自另一个单元格,因此未手动输入。 当我运行这个宏时,它会在我每次更改单元格或单击时出现。数字正确时也会出现。我只需要这个 msgbox 仅在它不等于该值时出现。
我还希望消息为红色。如果这很容易,请让我知道该怎么做或改变。对我来说最大的学习曲线,因为我总是避免使用 vba 代码。
编辑:请看下面的链接。右边的 1,2 和 3 的条形码是正确的,可以扫描到 B4 等等,错误的 4 和 5。我希望 msgbox 或用户窗体能直观地显示错误的。如果输入正确,则不会弹出。
enter image description here https://1drv.ms/x/s!AvRcvV5GEpBXnRIrzT2xDTv0iTQh?e=tV3LeN
【问题讨论】:
-
要获得红色文本,只需创建自己的对话框作为用户表单。关于你问题的另一部分。你到底想达到什么目的。目前,您正在针对单个值检查 10 个单元格。如果其中任何一个 not 等于
17521,您将看到弹出窗口。在您的问题中,您说的是单数而不是复数。是哪个? -
另外,如果这些值因公式而发生变化(“非手动输入”),您无法通过
Worksheet_Change(在那些特定单元格上)捕获它,所以我猜这就是你选择SelectionChange的原因?如果是这样,当您单击另一个单元格等时,您会得到弹出窗口,这并不奇怪。 -
那么您为什么不在
B4上运行Worksheet_Change事件呢?首先,您将检查Target和B4之间的Intersect结果,如果是,请检查扫描结果是否为17521并采取相应措施?如果公式可以,VBA 也可以!这将防止在更改其他单元格时不断弹出消息和检查。 -
我强烈建议您将示例数据添加到您的问题中,而不是链接文件。人们真的不应该点击该链接来下载他们不知道的文件。