用VBA编写当EXCEL中单元格等于某值时,如何实现用对话框提示?

在G列中任一单元格数据小于0时,弹出“错误”对话框,任一单元格数据小于0,小于100时,弹出“补充”对话,但G列数据是从公式中得到。如G1=U1+V1,任意改变U1或V1数值,符合条件的,弹出对话相应框。

第1个回答  2014-12-11
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, 7) <= 0 Then
MsgBox ("错误")
ElseIf Cells(Target.Row, 7) <= 100 Then
MsgBox ("补仓")
End If
End Sub

追问

好像不行

本回答被网友采纳
第2个回答  2014-12-11
Private Sub Worksheet_Change(ByVal Target As Range)

If Range("G" & Target.Row) <= 0 And Range("G" & Target.Row) <> "" Then MsgBox ("错误") Else If Range("G" & Target.Row).Value <= 100 And Range("G" & Target.Row) <> "" Then MsgBox ("补仓")

End Sub

补充上午那个答案……你修改某一行的值而使得该行的G列值变化,才会提示追问

可以了,谢谢,再问一下,如果现在的VBA是在sheet1的,用什么VBA可以我任点sheet1的单元格,sheet2自动后台运行刷新,可认吗?

追答

把上面所有的range前面加sheets("sheet1")或者sheets("sheet2")之类的

追问

刚才的VBA好像没有达到预期的效果,现在只要G列有数据后,对应的行每输入一个数都会有弹出,但我要的是只监控G列的数作弹出对话。而且不受G列公式的影响。。。
就好像G1=V1+S1。。。。只要V1或S1变时,G1的值达到时才有弹出,而不是在输入V1或S1时变有弹出。。。

追答

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 21 Or Target.Column = 22 Then
If Range("G" & Target.Row) "" Then MsgBox ("错误") Else If Range("G" & Target.Row).Value "" Then MsgBox ("补仓")
End If
End Sub
这样子看看

追问

可能是我没有表达清楚,我主要的是监控某一列中某一个单元的变化情况,如V1单元格,可能是通过A1vlookup到sheet2中得到V1的数据进行判断的,明白我的意思吗?

相似回答