为列中的值弹出VBA警报
我正在尝试在excel列中创建VBA警报弹出窗口。 在excel表格中,基于特定计算,将计算一些增长%(第H列),如果增长%>20%,将生成一个警报弹出窗口,询问原因代码,需要将其放入第I列。 代码对于特定单元格(比如说为列中的值弹出VBA警报,vba,excel,Vba,Excel,我正在尝试在excel列中创建VBA警报弹出窗口。 在excel表格中,基于特定计算,将计算一些增长%(第H列),如果增长%>20%,将生成一个警报弹出窗口,询问原因代码,需要将其放入第I列。 代码对于特定单元格(比如说H7)运行良好,但是当我将其扩展到一个范围(比如说H7:H700)时,它就不工作了。 有人能在这方面帮助我吗。 守则: Private Sub Worksheet_Change(ByVal Target As Range) If Range("H7:H700") >
H7
)运行良好,但是当我将其扩展到一个范围(比如说H7:H700
)时,它就不工作了。
有人能在这方面帮助我吗。
守则:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("H7:H700") > 0.2 Then
MsgBox "GR% >20%, Put the reason code"
End If
End Sub
%增长原因代码
34%
20%
18%
excel工作表的更新快照:
现在ASM/RSM可以更新他们的预测,并自动计算H列中的增长%。相同的值将复制到I列中(作为特殊粘贴),如果增长%>20%,则会弹出警报
我正在使用的代码(在JC Guidicelli的帮助下):
端接头
问题是计算增长%<20%,它运行良好…但对于增长%>20%,它会抛出弹出窗口,但会卡住。。
有人能在这方面帮助我吗?编辑:
在所选范围内添加或粘贴值时,将显示消息;)
试着让我知道,这对我有用:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range, Rg As Range
On Error Resume Next
Set Rg = Application.Intersect(Target, Range("H7:H700"))
If Not Rg Is Nothing Then
For Each xCell In Rg
If xCell.Value > 0.2 Then
xCell.Select
MsgBox "GR% >20%, Put the reason code"
Exit Sub
End If
Next
End If
End Sub
因此,您有两列和多行,对于每一行,您需要检查该值是否大于0.2,并且需要针对每一行大于0.2向用户发出警报。我对你的理解正确吗。。。(如果您的问题中包含电子表格数据样本,人们将更容易理解您的问题并测试可能的解决方案。)工作表的更改不会触发计算公式值的更改。您需要对工作表的更改进行更多的研究。1.禁用事件2。差错控制3。当目标不止一个单元格时处理目标。4.是什么触发了工作表的更改。@SeanW333…是的…这正是我想要做的…@JC Guidicelli…非常感谢你的详细回答..使用上面提到的代码进行了尝试…当我在最后运行宏时它起作用了…所以假设有5种情况下GR%>20%,弹出窗口出现5次…我尝试的代码有点不同…对于H7:H700范围,每当我打算将值放入H7:H700范围且值>20%时,它都会弹出一个弹出窗口,不是在填充结束时。根据代码,我应该会遇到5次弹出…每次发生后…你能帮我解决这个问题吗…提前谢谢!!看看答案。我编辑了代码并让我知道;)伟大的很高兴帮助您@JC Guidicelli…感谢您的帮助…是否可以使用此。。。?假设在H7:H700列中计算了增长百分比…我在I7:I700列中制作了一个特殊的粘贴…每当I7:I700中的值出现时,它都会弹出相同的弹出框…因此,基本上,如果是计算值,可以不输入数据,而是设置弹出框…尝试使用(附加问题发布的快照)…Sheets(“Sheet1”)。范围(“H7:H700”)。复制工作表(“Sheet1”)。范围(“I7:I700”)。粘贴特殊XLPaste值…但它不起作用…请让我知道是否可能…非常感谢。。!!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range, Rg As Range
On Error Resume Next
Set Rg = Application.Intersect(Target, Range("H7:H700"))
If Not Rg Is Nothing Then
For Each xCell In Rg
If xCell.Value > 0.2 Then
xCell.Select
MsgBox "GR% >20%, Put the reason code"
Exit Sub
End If
Next
End If
End Sub