当单元格为空并且有许多例程时,如何处理错误 [英] How do I error handle when a cell is blank and there are many routines

查看:66
本文介绍了当单元格为空并且有许多例程时,如何处理错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张包含大量代码的表格我在过去的几年里一直在努力,但我是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆