当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