首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在excel 2016的.onAction中传递与Vba excel的参数

在Excel 2016中,.onAction是一个事件处理程序,用于在用户单击或悬停在指定对象上时执行特定的操作。它可以用于按钮、菜单项或其他可交互的对象。

在VBA Excel中,可以通过.onAction传递参数来实现更灵活的操作。以下是一种实现方法:

  1. 首先,在Excel中创建一个按钮或菜单项,并为其分配一个宏(宏可以是VBA代码)。
  2. 打开VBA编辑器(Alt + F11),找到该宏的代码。
  3. 在代码中,使用Sub或Function定义一个带有参数的过程。例如:
代码语言:txt
复制
Sub MyMacro(param1 As String, param2 As Integer)
    ' 执行操作,使用传递的参数
    ' 例如:将参数值写入单元格
    Range("A1").Value = param1
    Range("A2").Value = param2
End Sub
  1. 在按钮或菜单项的.onAction事件处理程序中,调用该宏,并传递参数。例如:
代码语言:txt
复制
Sub AssignMacro()
    ' 为按钮或菜单项分配宏,并传递参数
    Dim param1 As String
    Dim param2 As Integer
    
    param1 = "Hello"
    param2 = 123
    
    ' 将按钮或菜单项的.onAction设置为宏,并传递参数
    Application.CommandBars("MyMenuBar").Controls("MyButton").OnAction = "MyMacro(""" & param1 & """, " & param2 & ")"
End Sub

在上述代码中,我们首先定义了一个带有两个参数的宏(MyMacro)。然后,在AssignMacro过程中,我们定义了参数的值,并将按钮或菜单项的.onAction设置为调用该宏,并传递参数。

请注意,参数的类型和数量应与宏的定义相匹配。在传递参数时,我们使用双引号将字符串参数括起来,并使用逗号分隔多个参数。

这样,当用户单击或悬停在按钮或菜单项上时,Excel将执行指定的宏,并将传递的参数用于操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Excel中的VBA编程「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 目的:有时我们需要对Excel文件中大量的数据进行整理,此时如果使用手动整理会非常繁琐而且容易出错。...而如果采用VBA语言,在Excel中根据需求编写一段简单的代码就能自动完成大量数据的整理工作。 1、以Excel 2007为例,如果要进行VBA编程,需要启用“开发工具” 选项。...在Excel 选项对话框中勾选【在功能区显示“开发工具“选项卡】复选框。 在开发工具选项中点击“查看代码”,打开Microsoft Visual Basic界面。...并在该模块中添加一个名为Test的函数,如下所示: 在Sub 和End Sub间添加函数体,并保存。注意一定要将Excel文件保存为启用宏的工作薄(*.xlsm)格式。...3、然后点击开发工具选项中的宏按钮,打开如下对话框 选择Test,并点击执行。就能运行你所编写的Test函数。

    5.6K20

    VBA专题10-21:使用VBA操控Excel界面之禁用和启用控件、组和选项卡

    过程中,如果活动工作表的名字是Sheet1则参数Enabled被设置为True。...在Custom UI Editor中保存该文件,首次在Excel中打开该文件时,将会出现关于Initialize和GetEnabledAttnSh过程提示的错误消息,因为在标准的VBA模块中仍然没有这两个回调过程...End Sub 要基于其在XML代码中的id禁用(和启用)某自定义控件,在现有的标准VBA模块或者新的标准VBA模块中包括下面的代码: Sub EnableAll() Call RefreshRibbon...是否启用(或禁用)某控件取决于在RefreshRibbon中参数传递的值。一旦使这些控件无效,就调用GetEnabledAttnSh过程,遍历共享这个相同回调的所有无效的控件。...如果控件的id与参数值匹配,就启用该控件。否则,禁用该控件。

    3.4K20

    TidyFriday Excel 用户的福音!在 R 中实现 Excel 的功能

    许多 R 的新用户在金融、市场、商业分析等领域有丰富的行业经验,但是他们并没有太多的编程背景,所以日常工作中还是选择 Excel、PowerBI 这些传统的工具进行工作;tidyquant 的作者意识到了这些痛点...,于是他在新版本中加入了好多 Excel 的特性,如果你是 Excel 的重度患者,又想体验 R 强大的数据处理和可视化功能,那么本文再合适不过了!...(tidyverse) library(tidyquant) library(knitr) 在 R 中实现透视表 很多 Excel 的用户青睐它的数据透视表功能,现在 R 也可以通过 pivot_table...company) [1] "Amazon" 不过我们在 Excel 中使用 VLOOKUP 是想在一个表中添加列,这列的值要去另一个表中查找, 在 R 中怎么做呢?...在 R 中实现各种「IFS」函数 很多同学喜欢 Excel 是因为它的条件筛选功能,比如SUMIFS(), COUNTIFS(), AVERAGEIFS()等; ? 在 R 中如何实现呢?

    2.5K30

    Python中的参数传递与解析

    Python传递命令行参数 Python的命令行参数传递和C语言类似,都会把命令行参数保存到argv的变量中。对于python而言,argv是sys模块中定义的一个list。...与C语言不同的是,python中并没有定义argc,要获得参数的个数,需要使用len(sys.argv) 当用户使用'python -c "command" '来运行一条python语句时,argv中保存的是...err.opt是出错时正在解析的选项,err.msg是错误消息。 出错的情况包括: 1. 选项没有在传入参数中的短选项或者长选项列表定义。 2. 需要带参数的选项没有跟参数。 3....action指定argparse如何处理该选项的参数,共有8个值可选。 'store': 默认值,表示存储参数,如上面例子中的args.foo存储hello world....,选项的参数必须从这组参数中来选取。

    2.1K70

    VBA专题10-22:使用VBA操控Excel界面之重新利用内置控件以及监控内置控件

    学习Excel技术,关注微信公众号: excelperfect 重新利用内置控件 通过使用command元素及其onAction属性,可以临时或永久地覆盖内置控件的功能。...在标准VBA模块中编辑回调过程,永久地重新利用“剪切”控件的功能: 'Callback for Cut onAction Sub MyCut(control As IRibbonControl, ByRef...也可以临时覆盖内置控件的功能,并通过简单地设置回调过程中的参数cancelDefault为False来重新恢复其功能。...cancelDefault = False End Sub 注意,“加粗”控件是一个切换按钮,其onAction属性的回调必须带有上面所示的3个参数。...然而,在Custom UI Editor for Microsoft Office中产生的回调签名的参数数量错误,如下: 'Callback for Bold onAction(wrong number

    1.1K10

    VBA专题10-24:使用VBA操控Excel界面之单元格上下文菜单(Excel 2010及以后的版本)

    学习Excel技术,关注微信公众号: excelperfect 添加按钮控件 假设你需要对工作表中前面有货币符号的值执行计算,然而那些值被解释为文本,你要编写VBA过程来移除所选单元格区域中的货币符号。...在标准的VBA模块中的过程: Sub RemoveUSD(control As IRibbonControl) Dim workRng As Range Dim Item As Range...示例XML代码: image.png image.png image.png 在标准VBA模块中的代码: Public myRibbon As IRibbonUI Dim Checkbox1Pressed...《VBA专题10-23:使用VBA操控Excel界面之添加动态菜单》一文中,当用户激活不同的工作表时,在Workbook_SheetActivate事件处理中明确地使菜单无效(为了重新构建菜单)。...下图展示了含有不同类型的(自定义和内置的)控件的单元格上下文菜单: 640 (1).gif 注意,无法将控件添加到Excel 2007中的单元格上下文菜单和更早的XML代码中。

    1.6K10

    VBA专题10-14:使用VBA操控Excel界面之在功能区中添加自定义库控件

    在item元素中: image属性的值是插入的图像的ID,如上面的图1所示。 id属性的值不必与插入的图像的ID相同,可以是任意独立的唯一文本字符串。 8....在Excel中打开该文件。 12. 按Alt+F11键激活VBE。 13. 插入一个标准的VBA模块,并粘贴在步骤9中复制的回调代码。 14. 在过程中添加一个MsgBox语句来测试控件。...) MsgBox "你选择的是" & id End Sub 下图2展示了在Custom选项卡中出现在库控件中的项: ?...图2 代替上述第4步和第5步中手工插入图像,可以通过使用VBA过程使用相同的图像填充库。通过赋VBA过程的名称到loadImage回调属性来实现。下面列出了XML代码和VBA代码: ?...Excel\使用VBA操控Excel界面\04.

    3.1K10

    VBA专题10-11:使用VBA操控Excel界面之在功能区中添加自定义拆分按钮控件

    添加拆分按钮控件的步骤与本系列前面文章(参见:VBA专题10-10:使用VBA操控Excel界面之在功能区中添加自定义切换按钮控件、VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件...)中的步骤相同,新建一个启用宏的工作簿并保存,关闭该工作簿,然后在CustomUI Editor中打开该工作簿,输入下面的XML代码: ?...重新打开该工作簿后,在“Custom”选项卡中显示含拆分按钮的组,如图1所示。 ?...图1 在VBE中添加回调代码: 'Callbackfor Btn1 onAction Sub Macro1(control As IRibbonControl) MsgBox control.Tag...图2 说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。

    1.8K10

    VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件

    下面的一系列文章将重点讲解如何在功能区中添加不同类型的自定义控件,它们与最底层的自定义命令相关。这里的自定义命令是指程序员自已编写的VBA过程。...添加按钮 如果要在内置功能区选项卡中添加两个按钮,在单击这些按钮时会调用VBA过程,那么执行下面的步骤: 1. 创建新工作簿并保存为启用宏的工作簿。 2....如果要使用自已设计的图像,只需使用image属性替换掉imageMso属性。 onAction属性是一个回调属性。该属性的值是在单击按钮时要执行的VBA过程的名称。 5....之后,要将其粘贴到工作簿的VBA模块中。 7. 保存并关闭该文件。 8. 在Excel中打开该工作簿文件。 9. 按Alt+F11键打开VBE。 10....在Insert0回调过程中的参数control有3个属性: ID:在XML代码中指定的控件的id。 Context:包含该功能区的活动窗口。

    5.2K30

    VBA专题10-18:使用VBA操控Excel界面之在功能区中添加自定义菜单控件

    excelperfect 这是本系列文章讲解的最后一种在功能区中添加的自定义控件类型,也是用于组织多个命令的一种非常有用的控件——菜单控件。...添加该控件的步骤与前面文章介绍的相同,新建一个启用宏的工作簿并保存,关闭该工作簿,然后在CustomUI Editor中打开该工作簿,输入下面的XML代码: ?...在Excel中打开该工作簿,然后打开VBE,插入一个标准的VBA模块,输入下面的代码: 'Callback for button1 onAction Sub Macro1(control As IRibbonControl...在后面的文章中我们会详细介绍添加动态菜单这类特殊的控件。 下图演示了在自定义选项卡中添加的菜单控件的效果: ?...说明:本专题系列大部分内容学习整理自《Dissect and Learn Excel VBA in 24 Hours:Changing workbook appearance》,仅供学习研究。

    1.6K30

    Excel技巧:在Excel中清除剪贴板的几种方法

    标签:Excel技巧 Excel剪贴板是在工作表中移动数据的便捷工具,了解它的工作原理可以帮助更高效地工作。...在Excel中复制或剪切数据时,该数据将临时存储在剪贴板上,同时Excel剪贴板还将显示在其他程序中复制或剪切的数据。 这允许用户稍后粘贴存储的数据,甚至可以访问比上次复制的项目更多的内容。...这样,可以在粘贴多个项目之前复制它们。 剪贴板将保存剪切或复制的所有项目,即使在关闭时也是如此。因此,在开始使用之前,可能需要先清除所有剪贴板内容。这样,最终仅粘贴相关的项目。...方法3:使用VBA 使用VBA,只需一行代码: Application.CutCopyMode = False 清除剪贴板中所有项目。...如果要创建一个执行大量复制和粘贴操作的宏,可以在每个粘贴命令后添加此行以清除剪贴板。 方法4:使用任务栏 不打开剪贴板,也可以清除剪贴板中的项目。

    4.6K40

    ChatGPT在 word 和 excel 中的应用

    最近看到复旦赵斌老师发在 B 站上的视频“新学期,我将鼓励学生用ChatGPT来完成作业”[1],其中有用到 ChatGPT 编写VBA 代码在 Word 中实现特定目标。...以下是老师提到的原要求 对一篇稿子当中各段内容进行计数,并将数字记录在段落开始。 ChatGPT 不仅写出了代码,还给出了使用教程。...这让我想起前几天帮同学转的一个数据。他的需求是针对第4和第5列进行判断赋值 如果等于第6列的赋为A; 如果不等于第6列但等于第7列的赋为B; 不等于第6列且不等于第7列且不等于NA的赋为H。...黄色标记为我用 IFS()计算出的结果,绿色标记为我用 ChatGPT 给的函数得到的结果,完全相同! 数据全是我瞎编的 当然以下只是简单的例子,有没有你想要的答案取决于你的提问方式。...最近有一个 ChatGPT的项目用于提升你ChatGPT的体验, Awesome ChatGPT Prompts[2],上面提供了基于几十种不同职业的提问方式,还不快快用起来!

    40930

    代码管理

    学习使用VBA来处理Excel的问题,自然是为了简化工作。但是随着自己VBA使用的增多,代码分散在各个Excel文件中,非常的散乱。管理好自己的代码是提高代码复用率的关键,也能提高开发的效率。...数据与代码分离 Excel本身就是数据和代码混在一起的,这确实提供了极大的便利,但是随着VBA使用的深入,会逐渐发现这种便利最终也会带来许多的麻烦: 同一种功能的程序在多个Excel VBA中存在...然后在具体实现某个任务的时候,如果需要用到,使用工具-引用的方式去调用,具体可以看利用VBAProject来共用VBA代码里介绍的方法。...这样不但能提高效率,而且在使用过程中发现了问题的话,只要修改了加载宏中的代码,所有引用了这个加载宏的具体任务代码都能够完善。...可执行文件 VBA自然没有可执行文件这个概念,代码本身也是保存在一个Excel文件里。

    96410

    VBA实用小程序:将Excel中的内容输入到Word

    将Excel数据输入到Word文档并不难,但这会破坏书签,如果你在对Word文档进行了大量修改后发现想要重新从Excel中输入数据,那可能会令人沮丧。...我想要一个可以根据需要经常重复的将Excel数据输入到Word,这意味着在复制完成后要重新创建书签。 在此情况下,我想要一些简单的东西,任何人都可以在没有技术知识的情况下进行设置。...因此,下面的这段代码很简单,对其进行设置,只需为Excel中的文本、区域和图表命名,并按照代码中的说明在Word书签中创建匹配的名称。 注意,我不能保证它在所有情况下都能工作。...完整的代码: '这里的代码使用书签将图表和表复制到Word文档中 'Word文档必须打开并处于活动状态,即当前可见的Word文档 '要复制一个表,给它一个以tbl开头的区域名称 '然后在Word文档中插入一个使用该名称的书签...'在给它一个名字时,最安全的是点击图表前按Ctrl '然后你在Word中包含一个具有此名称的书签,同样以 tag_ 为前缀 '运行下面的宏应该复制所有内容 '注意这种方法意味着不能多次插入相同的图表/

    2.1K20

    VBA专题06-4:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例1

    使用VBA自动从Excel中获取数据来创建Word报表文档,一般按照以下步骤: 1.创建Word文档模板,用来作为数据分析结果发布平台。在模板中,在每个要插入数据的位置定义书签。...2.使用VBA,将Excel中的数据复制到Word文档,从而形成一份报表文档。 示例1:自动复制Excel数据区域到Word文档 本示例使用前期绑定,即首先要在VBE中设置对Word对象库的引用。...图7:示例数据工作表 创建一个名为PasteTable.docx的文档,并在想要粘贴数据的位置插入一个名为DataTable的书签。关闭该文档并将其与示例Excel文档放在相同的目录中。...关闭该文档并将其与示例Excel文档放在相同的目录中。 将图8所示示例工作表中的单元格区域A1:E8命名为“rang1”,A11:F15命名为“rang2”。...“笨”,因为在Excel中有多少数据区域,就要命名多少个区域,并且在Word中也要建立相应数量的书签。

    5.8K11
    领券