当单元格为空白并且有许多例程时,如何处理错误

时间:2018-10-07 04:50:23

标签: vba excel-vba error-handling

在过去的几年中,我有一份包含很多代码的工作表,但是我对VBA还是陌生的,没有包含任何错误处理。我尝试了几件事,但是我永远做不到。直到最近才真正影响到我。我的大部分例程都是由包含销售价格的单元格(单元格D5)驱动的。我使用Worksheet_Change ByVal目标作为范围来更改不同单元格时发生的更改,因此当销售价格更改时,它开始运行例程。 我注意到的是,如果删除单元格D5中的销售价格,此特定例程是第一个给我VBA错误的例程。因此,我想我可以要求某人给我一个简单的代码,以便在例行程序触发前捕获空单元格,并可能弹出一个窗口,说“销售价格不能为空”,并可能恢复为该单元格的先前值。调试错误将我带到以“ If Sheets(“ Main”)。Range(“ D6”)。Value <0.8001“

开头的代码行
origin

任何帮助将不胜感激:-)

1 个答案:

答案 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