VBA代码弹出msgbox并返回上一个值

时间:2017-08-02 13:37:43

标签: vba excel-vba excel

当单元格值超过100时,我需要一个弹出错误/警告消息的VBA代码。

例如,如果在B2中输入值,则F2单元格会自动更新。 B2值越高,F2值越过100,纸张变为错误。

所以,我需要在这里给出消息使用,当F2超过100并且B2应该返回到最后一个值。

我目前的代码非常基本。请帮助我通过这个。

If Sheets("200L_50°C").Range("L2").Value < 100 Then
MsgBox "No further pressure drop at higher operating temperatures",   vbOKOnly, "High temperature"

更新,这是我在工作表中输入的代码。我在第一行收到错误:

Public G1Value As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("G1") Then
    If Range("L2") > 100 Then
        MsgBox "Error. Invalid value for G1"
        Range("G1") = G1Value
    Else: End If
Else: End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target = Range("G1") Then
    G1Value = Range("G1")
Else: End If
End Sub

2 个答案:

答案 0 :(得分:1)

我不确定我是否收到您的问题,但似乎您可以在单元格B2中使用数据验证来阻止用户输入高于100的值。单击单元格B2,转到“数据”选项卡,然后单击关于“数据验证”。修改如下图所示的条件,并在“错误警报”选项卡上输入您希望他们在尝试输入高于100的值时看到的消息。

data validation picture error alert msg picture

答案 1 :(得分:1)

坚持,我想我现在对你的问题有了更好的理解。当用户在B2中放置某些内容时,如果该更改导致单元格F2超过100,则您希望输出错误消息并将单元格B2返回到它的值。以下是您可以轻松完成的任务:

右键单击工作表标签名称,转到您所在工作表的视图代码:

view code of worksheet

然后添加此代码(如果存在重复方法,则注释掉旧代码或如果它不重要则替换它。)

Public B2Value As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("B2") Then
        If Range("L2") > 100 Then
            MsgBox "Error. Invalid value for B2"
            Range("B2") = B2Value
        Else: End If
    Else: End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target = Range("B2") Then
        B2Value = Range("B2")
    Else: End If
End Sub