Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为列中的值弹出VBA警报_Vba_Excel - Fatal编程技术网

为列中的值弹出VBA警报

为列中的值弹出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") >

我正在尝试在excel列中创建VBA警报弹出窗口。 在excel表格中,基于特定计算,将计算一些增长%(第H列),如果增长%>20%,将生成一个警报弹出窗口,询问原因代码,需要将其放入第I列。 代码对于特定单元格(比如说
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