当单元格为空并且有许多例程时,如何处理错误 [英] How do I error handle when a cell is blank and there are many routines
问题描述
我有一张包含大量代码的表格我在过去的几年里一直在努力,但我是VBA的新手并没有加入任何错误处理。
我尝试了一些东西,但我永远无法使它工作。直到最近它才真正影响到我。我的大部分例程都是由包含销售价格的单元格驱动的(单元格D5)。我使用Worksheet_Change ByVal目标作为范围来更改不同的
单元格时更改的内容,因此当销售价格更改时,它开始运行例程。我注意到的是,如果我删除单元格D5中的销售价格,这个特殊例程是第一个给我一个VBA错误的例程。所以我想我可以请某人给我
一个简单的代码来捕捉常规火灾前的空单元格,也许是一个弹出文件说"销售价格不能为空"。并且可能恢复到该单元格的先前值。调试错误将我带到以"If Sheets(" Main")开头的代码行。范围("D6")。值
< 0.8001"
Sub Calc_MI()
If Sheets("Main").Range("D12").Value = "FHA" Then
Sheets("Main").Range("D16").Value = 0.85
Else
If Sheets("Main").Range("D6").Value < 0.8001 Or Sheets("Main").Range("D12").Value = "VA" Then
Sheets("Main").Range("D16").Value = ""
Else
If Sheets("Main").Range("G14").Value > 0.45 Then
Sheets("Main").Range("D16").Value = (Sheets("Closing Costs").Range("BP100").Value + Sheets("Closing Costs").Range("BP101").Value + Sheets("Closing Costs").Range("BP102").Value)
Else
Sheets("Main").Range("D16").Value = (Sheets("Closing Costs").Range("BP100").Value + Sheets("Closing Costs").Range("BP102").Value)
End If
End If
End If
End Sub
任何帮助将不胜感激: - )
MEC
推荐答案
您提到在更改单元格D5时从Worksheet_Change调用例程。
You mention that the routines are called from Worksheet_Change when cell D5 is changed.
你可以这样做:
Private Sub Worksheet_Change(ByVal Target As Range)
& NBSP;&NBSP;如果不相交(范围("D5"),目标)则为Nothing然后为
如果范围("D5")。值<> ""然后是
Application.EnableEvents = False
'做东西
... ...
Application.EnableEvents = True
结束如果是
结束如果是
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("D5"), Target) Is Nothing Then
If Range("D5").Value <> "" Then
Application.EnableEvents = False
' Do stuff
…
Application.EnableEvents = True
End If
End If
End Sub
这篇关于当单元格为空并且有许多例程时,如何处理错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!