Excel中vba调用subvba里的function函数,结果为空#NAME?

启动一个错误处理程序并指定该孓程序在一个中的位置;也可用来禁止一个错误处理程序

On Error 语句的语法可以具有以下任何一种形式:

启动错误处理程序,且该例程从必要嘚 line 中指定的 line 开始line 参数可以是任何或。如果发生一个则控件会跳到 line,激活错误处理程序指定的 line 必须在一个过程中,这个过程与 On Error 语句相哃; 否则会发生错误

说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo

禁止当前过程中任何已启动的错误处理程序。

如果不使用 On Error 语句则任何运行时错误都是致命的;也就是说,结果会导致显礻错误信息并中止运行

在任何过程中,一旦错误处理程序处理了错误在当前过程中就会从 Resume 语句指定的位置恢复运行。

一个错误处理程序不是 Sub 过程或 Function 过程它是一段用行标签或行号标记的代码。

错误处理程序依靠 Err 对象的 Number 属性中的值来确定错误发生的原因在其它任何错误發生之前,或在vba调用sub一个可能会导致错误发生的过程之前错误处理程序应该先测试或存储 Err 对象中相关的属性值。Err 对象中的属性值只反映朂近发生的错误Err.Description 中包含有与

会使程序从紧随产生错误的语句之后的语句继续执行,或是从紧随最近一次vba调用sub含有 On Error Resume Next 语句的过程的语句继续運行这个语句可以置运行时错误于不顾,使程序得以继续执行可以将错误处理程序放置在错误发生的地方,而不必将控件传输到过程Φ的其它位置

停止在当前过程中处理错误。即使过程中包含编号为 0 的行它也不把行 0 指定为处理错误的代码的起点。如果没有 On Error GoTo 0 语句在退出过程时,错误处理程序会自动关闭

在错误未发生的时候,为了防止错误处理程序代码运行请像在下段程序中那样,在紧靠着错误處理程序的前面写入 Exit Sub、Exit FunctionExit Property 语句


  
错误处理程序代码在 Exit Sub 语句之后,而在 End Sub 语句之前从而与过程中的流程分开。

本示例先使用 On Error GoTo 语句在一个过程Φ指定错误处理的代码所在本示例中,试图删除一已经打开的文件从而生成的错误码为 55这个错误将由示例中的错误处理程序码来处理,处理完後控制会回到发生错误的语句处。On Error GoTo 0 语句关闭错误陷阱然后 On Error Resume Next 语句用来改变错误陷阱,以便发觉下一个语句产生的错误的范围請注意示例中使用 Err.Clear 在错误处理完後,清除 Err 对象的属性

 ' 告诉用户出了什么事。然后清除 Err 对象
Exit Sub ' 退出程序,以避免进入错误处理程序
 Case 55 ' 发生“文件已打开”的错误。
 Resume ' 将控制返回到产生错误的语句
关于Resume语句的解释

在错误处理程序结束后,恢复原有的运行

Resume 语句的语法可以具有鉯下任何一种形式:

如果错误和错误处理程序出现在同一个中,则从产生错误的语句恢复运行如果错误出现在被vba调用sub的过程中,则从最菦一次vba调用sub包含错误处理程序的过程的处恢复运行

如果错误和错误处理程序出现在同一个程序中,则从紧随产生错误的语句的下个语句恢复运行如果错误发生在被vba调用sub的过程中,则对最后一次vba调用sub包含错误处理程序的过程的语句(或 On Error Resume Next 语句)从紧随该语句之后的语句处恢复运行。

在必要的 line 指定的 line 处恢复运行line 参数是或,必须和错误处理程序在同一个过程中

在错误处理程序之外的任何地方使用 Resume 语句都会導致错误发生。

下面是一个关于错误处理的例子:

现在想计算B列与C列的比值的大小,明显的"计划/实际"值肯定会出现除数为0的现象,现在要做的是洳何处理这个错误,使程序可以跳过错误行继续运行,并且在将错误的原因标明.

处理后的样表如下所示:

程序将出错的单元格赋值为0,并且可以继續运行,避免了程序的中断与错误处理.

这是不加Next时的效果,程序运行后会一直运行出错语句,导致程序死循环.由此看出,上面的程序并没有纠正错誤的原始数据,想想也是这个道理,很多时候,要做的工作以原始数据为基础,得出一定的结论,有时错误的结论也是一种结论.

总是要有一个打开的时机的总偠有一段打开的代码,不然怎么凭空打开怎么获取打开的文件名. 如果你想在你的宏运行前打开,你可以把vba调用sub与打开的代码放在宏运行嘚前面. 如:以excel打开word为例你可以在Workbook_Open下放置你vba调用sub和打开word 的代码: Private Sub Workbook_Open() dim aaa as ...application End Sub 方法你应该比较熟悉了,就是在vbaproject下双击ThisWorkbook然后在上边的下拉列表里选对象囷事件.如果在宏中用路径打开被vba调用sub的文件,那么该文件就必须放在路径指定的位置我不想这样。

如何在VBA中vba调用subExcel工作表函数

2、选择“常規”选项卡并在右侧点选“在功能区显示‘开发工具’选项卡”,并单击“确定"

3、在单元格A1中输入“弧度”,单元格B1中输入“角度”单元格A2中输入“3.14”,然后在单元格B2中输入公式"=DEGREES(A2)"在按下回车后该单元格输出结果为179.9087477。

注:DEGREES函数的作用是将弧度转化为角度

4、用VBA實现同样的功能。

5、在“Microsoft Excel 对象”上点鼠标右键依次点击“插入” ->“模块”,创建“模块1”并在该模块中输入内容:Sub 转换()MsgBox Application.WorksheetFunction.Degrees(3.14)End Sub点击“运荇子过程/用户窗体”按钮,在弹出的对话框中选择“转换”然后点击“运行”按钮。

6、程序弹出对话框结果与在Excel中利用公式输出的结果一样,只是有效数字的位数不一样这可以根据需要加以取舍。

Excel VBA怎样vba调用sub内置的加载宏

vba调用sub函数可以这写:Run (工作簿名!宏名参数1,參数2……)例如vba调用subA1.xls文件里宏名称为ABC的宏假定宏参数为1和5,代码为:Run ("A1.xls!ABC",1,5)

注意被vba调用sub宏的文件(A1.xls)要处于打开状态。

Excel VBAvba调用sub子程序时如哬传递参数

VBAvba调用sub子程序时如果不带参数,直接写sub过程名或者Call sub名称即可。

怎样在VBA指令中vba调用subExcel函数

在有word文件的文件夹中新建一个excel工作簿咑开工作簿,按Alt+F11把下面的代码复制进去,按F5执行

代码会复制work文件的前300个字符到excel中。

我要回帖

更多关于 vba类模块 的文章

 

随机推荐