在过去的几年中,我有一份包含很多代码的工作表,但是我对VBA还是陌生的,没有包含任何错误处理。我尝试了几件事,但是我永远做不到。直到最近才真正影响到我。我的大部分例程都是由包含销售价格的单元格(单元格D5)驱动的。我使用Worksheet_Change ByVal目标作为范围来更改不同单元格时发生的更改,因此当销售价格更改时,它开始运行例程。 我注意到的是,如果删除单元格D5中的销售价格,此特定例程是第一个给我VBA错误的例程。因此,我想我可以要求某人给我一个简单的代码,以便在例行程序触发前捕获空单元格,并可能弹出一个窗口,说“销售价格不能为空”,并可能恢复为该单元格的先前值。调试错误将我带到以“ If Sheets(“ Main”)。Range(“ D6”)。Value <0.8001“
开头的代码行origin
任何帮助将不胜感激:-)
答案 0 :(得分:0)
您可以将其放置在“主要”工作表代码窗格中
Option Explicit
Dim oldVal As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$5" Then
If IsEmpty(Target) Then
MsgBox "Sales Price cannot be blank"
Application.EnableEvents = False ' disable events to prevent change event fire in an infinite loop
Target.Value = oldVal ' restore old backup value
Application.EnableEvents = True ' enable events back
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$5" Then oldVal = Target.Value ' if D5 selected then backup its value
End Sub