首页
学习
活动
专区
工具
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将执行指定的宏,并将传递的参数用于操作。

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

相关·内容

ExcelVBA编程「建议收藏」

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

3.9K10

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.2K20

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.4K30

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

1K10

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-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.5K10

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-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.

2.9K10

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.5K30

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:包含该功能区活动窗口。

4.9K30

代码管理

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

93010

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

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

3.2K40

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],上面提供了基于几十种不同职业提问方式,还不快快用起来!

36030

VBA专题10-19:使用VBA操控Excel界面之在功能区添加不同类型自定义控件

添加该控件步骤前面文章介绍相同,新建一个启用宏工作簿并保存,关闭该工作簿,然后CustomUI Editor打开该工作簿,输入下面的XML代码: ? ? ? ? ? ?...Excel打开该工作簿,然后打开VBE,插入一个标准VBA模块,输入下面的代码: 'Callback for button1 onAction Sub Macro1(control As IRibbonControl...该工作簿自定义选项卡不同类型控件如下图所示: ? 下图演示了自定义选项卡各类控件效果: ?...说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。...注:如果你有兴趣,你可以到知识星球App完美Excel社群下载这本书完整中文版电子书。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

1.8K10

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

excelperfect 添加步骤本系列上一篇文章《VBA专题10-9:使用VBA操控Excel界面之在功能区添加自定义按钮控件》步骤相同,即:新建一个启用宏工作簿并保存,关闭该工作簿,然后...重新打开该工作簿后,“Custom”选项卡显示含两个切换按钮组,如图1所示。我们看到,一个按钮带有标签,一个没有标签。可以对照XML代码看看自定义界面是怎么创建。 ?...图1 VBE添加回调代码,返回切换按钮状态: 'Callbackfor toggleBtn1 onAction Sub Macro1(control As IRibbonControl, pressed...As Boolean) MsgBox control.ID & "按下状态是:" & pressed End Sub 'Callbackfor toggleBtn2 onAction Sub...图2 说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。

1.7K10

VBA专题10-23:使用VBA操控Excel界面之添加动态菜单

学习Excel技术,关注微信公众号: excelperfect 本系列后面的示例程序,你将会看到如何使用项目和带图像库控件通过getItemLabel和getItemImage回调属性引用VBA...单击工具栏Validate按钮检查是否有错误。 7. 保存并关闭该文件。 8. Excel打开该文件。对于弹出错误消息,单击“确定”。 9. 按Alt+F11激活VBE。 10....下面展示了选择不同工作表时菜单内容: 640.gif 保留自定义复选框勾选条件 在上面的示例XML和VBA代码,当用户工作表Data单击动态菜单复选框后,复选框会相应地显示勾选或者取消勾选...然而,如果用户设置勾选该复选框后,通过单击工作表标签激活其他工作表,那么动态菜单被无效,菜单相关任何数据(包括复选框勾选条件)将被销毁。...下面,我们修改现有的VBA代码来实现此目的(加黑代码是在上面代码增加代码): 1.

5.9K20
领券