VBA(15)调用宏Call与Run

这篇具有很好参考价值的文章主要介绍了VBA(15)调用宏Call与Run。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开头:调用宏或函数(SUB/Function)需是常规或公用声明(Public)

本次测试用工作本与调用的宏如图:

VBA(15)调用宏Call与Run

 待调用宏1.XLS

Sub st1()
    MsgBox "表1.xls!Sheet1的宏"
End Sub
Sub tt1()
    MsgBox "表1.xls!ThisWorkbook的宏"
End Sub

Sub mt1()
    MsgBox "表1.xls!模块的宏"
End Sub

 待调用宏2.XLS

Sub abc1()
    MsgBox "写在表2.xlsm!ThisWorkbook的宏"
End Sub
Public Sub abc11()
    MsgBox "写在表2.xlsm!ThisWorkbook的宏2"
End Sub
Private Sub abc22()
    MsgBox "写在表2.xlsm!ThisWorkbook的私有宏"
End Sub

'写在表2模块1上的宏
Sub abc2()
    MsgBox "a11"
End Sub
Sub abc3(a3 As String)
    MsgBox a3
End Sub
Sub abc4(a4 As Integer, b4 As Integer, c4 As Integer)
    Dim d4 As Integer
    d4 = a4 + b4 + c4
    MsgBox d4
End Sub

写在测试.XLSM模块1的宏

Sub mt1()
    MsgBox "1"
End Sub

选项默认加载信任中心要启用宏(有风险,测试使用)本次测试为2013版OFFICE

VBA(15)调用宏Call与Run

 

一、Call用法

Sub Call1()
Dim str As String       '定义一个文本
    str = "abc2"        '把文本写入变量"
    Call str            '直接call变量
    Call abc2           '直接call宏名
End Sub
Sub call2()
    Call abc3("文本")       'Call有参数的宏时添加参数
    Call abc4(3, 4, 5)      'Call多参数
End Sub
Sub call3()
    Call ThisWorkbook.abc1          
    Call ThisWorkbook.abc11
    'Call ThisWorkbook.abc22         '方法成员未找到,因为是私有
End Sub

用法小结:

1、CaLL可以接变量或真接宏名调用,写在同一页面下的宏可以直接调用。

2、CaLL带参数的宏正常括号后接参数。

3、适用于本工作本下的非私有宏或自定义函数,格式CALL + 宏名 或者先定义变量装入宏名调用。不同模块下需加上模块名。


二、APPLICATION.RUN用法

Sub run1()
    'Application.Run "abc2"          '写在XLS格式里的可以直接这样调用
    Application.Run "模块2.Abc2"        '写在97以上的版本需写明在哪里的宏名,不区分大小写
    Application.Run ("模块2.abc3(""文本123"")")       '调用本模块叁数文本的宏
    Application.Run "模块2.abc4(1,2,3)"             '调用本模块多参数的宏
End Sub
Sub run2()
    '调用本工作本下不同模块的宏
    Application.Run "ThisWorkbook.aBC1"
End Sub
Sub run3()
    '调用另一个工作本下模块的宏
    '另一工作本已打开的情况下:run 工作表名!位置.宏
    Dim str3 As String
    str3 = "1.xls!" & "模块1.mt1"
    Application.Run sstr3
End Sub
Sub run4()
    '调用另一个工作本下模块的宏
    '另一工作本未打开的情况下:run '工作本路径.工作表名'!位置.宏
    Dim str4 As String
     str4 = "'" & ThisWorkbook.Path & "\" & "测试.xlsm" & "'" & "!模块1.mt1"
    Application.Run sstr3       '调用指定位置工作本会把其打开
    Application.Workbooks("测试.xlsm").Close        '调用后关闭
End Sub

用法小结:

1、调用名不区分大小写。
2、RUN "模块名.宏名" 等同于 RUN ("模块名.宏名")
3、application.run 在xls格式下可以直接引用单宏名(模块名/宏名不重复情况下),XLSX以上需带上模块名 + 宏
4、调用未打开的宏要指定路径加工作本名,注意加单引号。添加文本参数时要用""双引号。调用未打开的工作本宏后会打开目标工作本。

结语:非必要还是尽量把经常要调用的宏写在同一工作本,或单独整一个做用调用宏工作本(部分版本打开工作本时也会有一个专门存宏的工作本)。也可以通过加载宏选项引用官方加载项(就打开工作本的时候会默认打开一个加载工作本)把宏都存于加载表里。

微软官方的这几个加载宏的默认密码码如下
ATPVBACS.XLA Wildebeest!!
ATPVBAEN.XLA Wildebeest!!
EUROTOOL.XLA EXPTOOWS.XLA FUNCRES.XLA Wildebeest!!
HTML.XLA Weezaarde!?
LOOKUP.XLA PROCDB.XLA Wildebeest!!
SOLVER.XLA Wildebeest!!
文章来源地址https://www.toymoban.com/news/detail-440318.html

到了这里,关于VBA(15)调用宏Call与Run的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenAI】ChatGPT函数调用(Function Calling)实践

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。 本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获

    2024年02月12日
    浏览(49)
  • 【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。 本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获

    2024年02月12日
    浏览(50)
  • Google Earth Engine(GEE)——function中函数注意事项(内部变量不可在函数外调用)

    function函数是JavaScript的基本构件之一。JavaScript中的函数类似于过程--一组执行任务或计算数值的语句,但要使一个过程有资格成为一个函数,它应该接受一些输入并返回一个输出,在输入和输出之间有一些明显的关系。要使用一个函数,你必须在你想调用它的范围内定义它。

    2024年02月13日
    浏览(63)
  • call to non-‘constexpr‘ function

    在尝试迁移 openpnp - Smoothieware project 从gcc命令行 + MRI调试方式 到NXP MCUXpresso工程. 在加了头文件路径后, 还有一些语法错误. 这和编译器语法有关系. 在运行BuildShell.cmd后, 查看gcc版本如下. Smoothieware使用c++写的. 其中一条错误如下: 查了一下这条错误的原因, 就是语法错误. 在swi

    2024年02月04日
    浏览(50)
  • 重构内置类Function原型上的call方法

    代码优化: 希望给你们带来帮助,有更好的方法也希望发出来呦,期待你们的指点

    2024年02月13日
    浏览(48)
  • 【JavaScript】Function的祖传方法call与apply

    看了本文您能了解到的知识! 在本篇文章中,将带你了解 什么是call和apply , call和apply的用途 、如何手写 call 和 apply 以及 call 和 apply 的使用场景。 call() 和 apply() 是 JavaScript 中的两个内置方法,用于调用函数并指定函数中的 this 值。 两者的区别是: call() 方法的语法和作用

    2024年02月17日
    浏览(52)
  • 【JavaScript】手撕前端面试题:手写Object.create | 手写Function.call | 手写Function.bind

    🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结) 🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬 👉

    2024年02月21日
    浏览(69)
  • 开源模型应用落地-工具使用篇-Spring AI-Function Call(八)

        通过“开源模型应用落地-工具使用篇-Spring AI(七)-CSDN博客”文章的学习,已经掌握了如何通过Spring AI集成OpenAI和Ollama系列的模型,现在将通过进一步的学习,让Spring AI集成大语言模型更高阶的用法,使得我们能完成更复杂的需求。   是 Spring 生态系统的一个新项目,它

    2024年03月14日
    浏览(49)
  • 微服务下多模块拆分,公用类调用与模块隔离性怎么兼得呢

            在一个微服务项目中,为了追求低耦合,会根据业务板块对主系统进行切分为一个个子模块,模块间相互隔离,但是这样子就会导致一个问题:对于一些在多个子模块中都适用的配置类、工具类、封装类等都需要拷贝冗余到各个模块中,这样子显然是不太合理的,

    2024年01月24日
    浏览(32)
  • QT使用信号与槽时编译错误“no matching function for call to connect“

    转转于:http://t.csdn.cn/K3aYh 初学QT,在尝试用connect手动关联一个按钮和QlineEdit的时候编译报错,如下: 然后贴上主要代码块: ui长这样: 上网查了查,这种错误叫重载不匹配(好像叫这个名),于是我找了半天没找到哪里不匹配,期间去问了某个大佬学长结果学长也没看出来

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包