精华内容
下载资源
问答
  • VBA错误处理

    2021-08-28 12:20:46
    VBA错误处理相关

    VBA错误的三种类型

    • 语法错误:输入代码不符合VBA编写规范;
    • 运行时错误:程序运行时发生的错误;
    • 逻辑错误:语法和运行都没问题,结果不正确;

    这里讲的错误主要是运行时的错误;

    错误捕获和处理
    VBA中使用On Error语句捕获错误,该语句用于启动一个错误处理程序并指定该子程序在一个过程中的位置,或者用来禁止一个错误处理程序。
    如果不使用On Error语句,运行时的任何错误都会显示错误信息、终止程序;
    错误处理程序依靠Err对象的Number属性中的值来确定错误发生的原因;在其他任何错误发生之前,或在调用一个可能会导致错误发生的过程之前,错误处理程序应该先测试或存储Err对象中相关的属性值。Err对象中的属性值只反映最近发生的错误。Err.Description中包含有与Err.Number相关联的错误信息。
    Err.Number值介绍:
    Err.Number

    引用Err对象等同于访问Err.Number属性,MsgBox ErrMsgBox Err.Number是等同的;

    On Error语句

    • On Error GoTo line:
      启动错误处理程序,如果发生一个运行时错误,则会跳到line标号处开始执行错误处理程序。标号line必须位于与On Error语句相同的过程中,否则会发生编译时间错误。这个line也可以是其他命名;
    sub test()
    on error goto line1:
    debug.print "do something"
    line1:     ' 程序如果遇到错误,跳转到该位置往下运行
    debug.print "do other things"
    end sub
    

    案例:打开工作簿处理

    Function workbook_open(file_path As String)
    ' 打开工作簿
    Dim wb As Workbook
    On Error Resume Next   ' 遇到错误,跳过
    Set wb = Workbooks.Open(file_path)
    
    If Err <> 0 Then   ' 如果打开工作簿报错,直接结束程序,不运行下面代码
        Exit Function
    End If
    Debug.Print "处理工作表的其他逻辑"
    End Sub
    
    • On Error Resume Next:
      如果一个运行时错误发生,程序会转到发生错误语句的下一条语句,并在此继续运行。访问对象时要使用这种形式而不使用On Error GoTo。类似于python总的pass.
    sub deal_err()
    on error resume next
    debug.print "do something"
    ' 这段代码,如果报错,继续错误后下一条代码运行
    if err <> 0:
    	debug.print "如果遇到错误,可以在这里添加一点错误处理程序"
    end if
    on error goto 0   ''结束异常处理,下面语句如果遇到错误,会抛出错误信息,终止程序,这个0不会跳转,表示结束;
    debug.print "do other things"
    end sub
    
    # python
    try:
    	print("do something")
    	num = 1 / 0
    except Exception as e:
    	pass    # 跳过错误继续运行下一条语句
    
    • On Error GoTo 0:
      禁止当前过程中任何已启动的错误处理程序。如果没有On Error GoTo 0语句,则在退出过程时,错误处理程序会自动关闭。

    在错误未发生时,为了防止错误处理程序代码继续运行,一般在紧靠着错误处理程序的前面写入ExitSub、Exit Function或Exit Property语句。

    Resume语句

    • Resume:
      如果错误和错误处理程序出现在同一个过程中,则从产生错误的语句处恢复运行。如果错误出现在被调用的过程中,则从最近一次调用包含错误处理程序的过程的语句处恢复运行。
    • Resume Next:
      如果错误和错误处理程序出现在同一个过程中,则从紧随着产生错误的语句的下一个语句处恢复运行。如果错误发生在被调用的过程中,则找出最后一次调用包含错误处理程序的过程的语句(或On ErrorResume Next语句),从紧随该语句之后的语句处恢复运行。
    • Resume line:
    • 错误处理程序运行结束后,跳转到标号line处恢复运行。line必须和错误处理程序在同一个过程中。

    非代码内容提炼自《精通Excel VBA》- 伍云辉

    展开全文
  • On Error Resume Next '如果遇到错误,不管错误,继续往下执行,但如果嵌套了其他错误处理语句,这些错误处理语句还是会按照自己规则运行 语句xxxx On Error GoTo 0 ’结束错误捕捉 例子二: Sub 例子过程() ...

    自动关闭 Msgbox对话框:

    Private Declare Function MsgBoxEx Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Long) As Long
    
     Private Sub 测试自动关闭对话框()
        MsgBoxEx 0, "显示内容:2秒后自动关闭", "标题", vbYesNo + vbInformation, 1, 2000
     End Su

    错误捕捉:

    例子一:

    On Error Resume Next  '如果遇到错误,不管错误,继续往下执行,但如果嵌套了其他错误处理语句,这些错误处理语句还是会按照自己规则运行
          语句xxxx
    On Error GoTo 0 ’结束错误捕捉

    例子二:

    Sub 例子过程()  
    
        On Error GoTo Err_Handle                 '之后语句出错则跳转至 Err_Handle 标签处
    
                 处理语句1                                        '若出错,则跳转到 Err_Handle
    
         On Error GoTo 0                             '跳出错误捕捉,之后语句若出错,自动弹出出错框  
                 处理语句2                                   '若出错则弹出错误,可调试或结束
    
           Exit Sub   '如果没有这个退出过程语句,会一直执行下去
    Err_Handle:
            MsgBox ("不存在该数字")
    
    End Sub
    

    转载于:https://blog.51cto.com/alun51cto/2392898

    展开全文
  • VBA异常后弹框提示

    千次阅读 2017-05-09 22:40:58
    VBA异常后弹框提示
    Sub test3()
    
       
        Dim i As Integer
        Dim n As Integer 

        On Error GoTo error_test3

        i = 1   

        n = i / 0


        Exit Sub
        
    error_test3:

        MsgBox "程序错误,请联系开发人员!", vbSystemModal

    End Sub
    展开全文
  • sht.Cells(i, 2) = rs("cWhName") ' sht.Cells(i, 3) = rs("WA.cWhValueStyle") rs.MoveNext i = i + 1 Loop rs.Close cn.Close '关闭数据库链接,释放资源 Set sht = Nothing End Sub 逐语句调试出现这个错误,截图...

    Sublianjian_sql2000()'定义过程名称DimiAsInteger,jAsInteger,shtAsWorksheet'i,j为整数变量;sht为excel工作表对象变量,指向某一工作表DimcnAsNewADODB.Connection'定义数据链接对...

    Sub lianjian_sql2000() '定义过程名称

    Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表

    Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用

    Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表

    Dim strCn As String, strSQL As String '字符串变量

    strCn = "Provider=sqloledb;Server=127.0.0.1;Database=cw;Uid=sa;Pwd=;" '定义数据库链接字符串

    '下面的语句将读取数据表数据,并将它保存到excel工作表中:

    strSQL = "select cWhCode, cWhName,WA.cWhValueStyle from dbo.Warehouse WA" '定义SQL查询令字符串

    cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn

    rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中

    Set sht = Worksheets("Sheet1") '把sht指向当前工作簿的sheet1工作表

    i = 1

    Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作

    sht.Cells(i, 1) = rs("cWhCode") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列

    sht.Cells(i, 2) = rs("cWhName") '

    sht.Cells(i, 3) = rs("WA.cWhValueStyle")

    rs.MoveNext

    i = i + 1

    Loop

    rs.Close

    cn.Close '关闭数据库链接,释放资源

    Set sht = Nothing

    End Sub

    逐语句调试出现这个错误,截图如下。

    展开

    展开全文
  • VBA 忽略错误

    千次阅读 2021-01-23 21:19:33
    VBA 忽略错误 在过程前 加一句 On Error Resume Next 出现错误时会跳过错误语句继续下一条代码,不过不建议使用,会使程序达不到预期效果 可以使用遇到错误时结束 on error goto XXX ………… XXX: exit ....
  • <p>VBA 代码可以运行但运行完提示运行错误‘5’,无效的过程或调用参数,代码段指向If rng.Value = "┏" And rng(n + 1, 1).Value = "┗" Then行,请大神看看是什么...
  • WORD中运行如下代码,有的WORD能成功,有的WORD提示如下,头都大了到底咋回事,求助。 Sub 页面批量格式() ' ' 页面批量格式 宏 ' ' Selection.WholeStory With ActiveDocument.Styles(wdStyleNormal).Font If ....
  • 采用excel,写一小段vba代码:PrivateSubWorksheet_Change(ByValTargetAsRange)Sheets("Sheet1").Select'选择第一页面IfTime>=TimeV...我们需要得到银行的实时汇率并导入自己的数据库表中.采用excel,写一小段vba...
  • False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End If End Sub 上述代码执行过程中出现如题所示的错误,通过检查发现 if 条件 then elseif 条件 then end if 上述分支语句并没有问题。那么问题出在哪里...
  • VBA 出现400错误

    千次阅读 2018-08-01 11:39:04
    https://blog.csdn.net/xulianboblog/article/details/14230001
  • 在Excel 2007中运行VBA代码时出现自动化错误。我尝试连接到远程SQL Server数据库并将数据从Excel加载...我检出了MSDN网站,它提示这可能是由于与sqloledb提供程序相关的错误,并且缓解此问题的一种方法是使用ODBC。...
  • 当它打开VBA模块时,当前行是sub的定义 . 但唯一的选择是杀死整个Excel进程 .我有自定义文档属性,我有嵌入式组合框控件,我不知道它可能是什么,Excel没有帮助 .但是,当我在另一台计算机上打开相同的文件时 - 它...
  • 我的代码在Excel 2007中运行良好,因为我切换到excel 2010我开始得到此运行时错误自动化错误调用的对象已与其客户端断开连接,错误号为-2147417848然后excel冻结.在线上运行此功能2次后显示错误Sheets("Risk Details")...
  • VBA·编译错误:ByRef参数类型不符』 编写人 | SCscHero 编写时间 | 2021/8/19 AM12:3 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有一个微不足道的开始。 一、引言&...
  • word VBA运行时错误'4198':应用程序定义或对象定义错误 解决方法
  • EXCEL vba 运行错误438

    2017-03-13 16:10:13
    打开网页还没有问题,不懂为什么加个do while/ debug.print就提示 运行错误 438,对象不支持该属类或方法,我用的EXCEL2013版,WIN7-64BIT 这是错误代码 : Sub BrowseToSite() Dim IE As New SHDocVw....
  • I am trying to connect to mysql using Excel VBA, I am using Excel 2013. I am new to VB, so i followed this example: Inserting Data Into MySQL From Excel Using VBAHere is my connection code:Private Sub...
  • 我在Excel 2007中运行VBA代码时遇到自动化错误.我正在尝试连接到远程SQL Server数据库并将数据从Excel加载到SQL Server.我得到的错误是,“运行时错误’-2147217843(80040e4d)’:自动化错误”.我检查了MSDN网站,它...
  • 我对EXcel VBA有一些了解,我是UI Automation的新手。 我正在尝试使用Excel VBA在客户端环境中进行UI自动化。 我参考了UIAutomationCore.dll。 当我尝试单击应用程序上的按钮时,我收到“运行时错误-2147467256...
  • VBA中的错误处理

    千次阅读 2017-11-21 16:22:00
    从理论上讲,VBA没有提供任何的错误处理机制,这种被用在微软Office产品中的以Visual Basic语言为基础...这是典型的脚本语言的错误提示,联想到javascript语言,在浏览器中如果出现脚本错误,浏览器会给出提示信息,...
  • VBA 自动化错误错误440)

    千次阅读 2018-11-13 13:33:23
    VBA调用示波器采集时,读取波形数据头,读取数据: instrument.WriteString ":WAVEFORM:PREamble?" ' Query for the preamble. Preamble = instrument.ReadList ' Read preamble information and ...
  • VBA-语法-错误处理

    2019-08-20 10:50:34
    On Error GoTo 如果自本行开始后面的代码执行出错,则跳至指定位置继续执行。...在Err对象中包含一个HelpFile属性 : "C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7\2052\VbLR6.chm" 这里有一些语言参考还是有点用的
  • 有的时候,每当我们打开有VBA代码的Excel文件时,会看到提示,大概意思就是说“丢失了visual basic项目错误”的提示。结果,只能有只读的方式打开Excel。最后,Excel里面的VBA代码就找不到了、完全消失了,遇到这样...
  • 跑了一个多月的程序运行时突然报错, 怎么都调不好, 换电脑之后就OK了… 要疯掉… 估计是电脑卸载了啥东西,或装了啥东西,中毒了??? 慢慢找吧[哭]
  • 我一直试图在excel vba中以编程方式打开一个word文件,并使用书签在其中添加/编辑内容.但是,我发现在备用运行中,我得到’错误462:远程服务器不存在“错误.我研究了很多并且理解这有事做”不合格的引用;但是,我不明白...
  • 我在EXCEL中VBA连接oracle串如下Conn.ConnectionString ="provider=oraoledb.oracle.1;password=******;user id=*****;datasource=****"我电脑操作都正常,但为发给某些用户时,一直报错“运行出现3706错误”接着就...
  • Excel VBA 代码溢出错误

    千次阅读 2018-11-17 20:50:52
    错误原因:sheet1中没有100行或者100列,导致溢出;还有可能是经过计算的的数值超出了定义类型的范围,具体官方解释如下; 溢出(错误 6) 在尝试进行的分配超出分配目标的限制时,会导致出现溢出。 此错误...
  • WPS中VBA控制word时出现调用错误 背景, 在WPS的环境下, 我的WORD自动填写软件出错, 主要怀疑: 如果没有WORD文件被打开的状态下 如果最后一个文件被关掉, 与EXCEL不同, 这时对象一起也关掉 应对方案: 建立一个新的...
  • 在excel应用程序中,我们在执行代码的时候,会弹出是否要确认执行该处理提示框。当然这个提示框不是我们用msgbox函数做出来的,而是系统自带用来防止误操作带来的影响。但是有时候我们并不希望有这个提示框,因为会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,818
精华内容 1,527
关键字:

vba错误提示