当Excel单元格区域中的数据更新时提示消息框
我已经search了很高的这个,但不能让它适用于我的整个范围。 这是我的第一篇文章,所以要温柔。
我有一个algorithm来分析某些产品从一个生产阶段转移到下一个生产阶段的时间。 然后提供完成下一阶段生产所需的资源量。
我的问题是,当资源超过可用我想popup框出现并警告用户; 这应该发生在范围内的所有细胞。 我已经得到这个成功的工作,但只有当单元格“S7”超过了价值。 任何帮助将不胜感激。
代码如下:
Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng As Range Set myRng = ThisWorkbook.Sheets("SMT 2").Range("S7:S26") For Each mycell In myRng If mycell.Value >= 16 Then sVar = _ MsgBox("Will Enough Pre-Wave Resources be Available?", 4, "Attention!") If sVar = 7 Then Application.Undo End If Exit For Next End Sub
你想要通过所有的细胞或只是S7到S26?
如果你想通过S7:S26,这是代码:(退出是在错误的地方)
Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng As Range Set myRng = ThisWorkbook.Sheets("SMT 2").Range("S7:S26") For Each mycell In myRng If mycell.Value >= 16 Then sVar = MsgBox("Will Enough Pre-Wave Resources be Available?", 4, "Attention!") If sVar = 7 Then Application.Undo Exit For End If End if Next End Sub
你不需要循环。 您可以使用Intersect
来检查Range("A7:A26")
范围内的任何单元格是否更改。 另外请注意,下面的代码不适合那个用户在这个范围内粘贴值>16
场景。
这是你正在尝试?
Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng As Range Dim lRow As Long If Target.CountLarge > 1 Then Exit Sub On Error GoTo Whoa Set myRng = Range("A7:A26") Application.EnableEvents = False If Not Intersect(Target, myRng) Is Nothing Then lRow = Target.Row If Range("S" & lRow).Value >= 16 Then sVar = _ MsgBox("Will Enough Pre-Wave Resources be Available?", 4, "Attention!") If sVar = 7 Then Application.Undo End If Letscontinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume Letscontinue End Sub