VBA许多按钮指向同一个_Click sub

2024-01-09

我的表单上有一堆文本框按钮对。单击按钮时,我想将文本框的值插入数据库。名称“文本框”和“按钮”遵循命名标准,例如 Value1Tb - Value1Cmd 和 Value2Tb - Value2Cmd。

我的问题是,因为我想对每个按钮执行相同的操作,所以我希望能够编写一个 Sub,如下所示:

Private Sub AnyButton_Click(sender As CommandButton)
  Dim tb As TextBox
  Set tb = GetTBByName(s.Name)
  PutValueToDatabase(s.Name,tb.Text)
End Sub

但我找不到一种方法将按钮的单击事件指向与标准不同的子事件Name_Click().

任何人都知道解决这个问题的方法,这并不需要我写 50 种左右不同的东西Name_Click() subs?


如果您可以使用表单控件而不是 ActiveX(看起来您现在可能就是这样),那么 Chris 的解决方案似乎不错。

但是,如果您需要 ActiveX CommandButtons,那么您无法(因为 VBA 编译器会告诉您,“过程声明不匹配...”)在单击事件的回调中包含参数,并且您无法从多个对象,尽管您当然知道哪个按钮引发了事件(因为关系是 1 CommandButton = 1 Sub)。

所以......我会选择类似的东西:

Private Sub Value1Cmd_Click()
    Call TheMethod(Value1Cmd)
End Sub    

Private Sub Value2Cmd_Click()
    Call TheMethod(Value2Cmd)
End Sub


Private Sub TheRealMethod(sender As CommandButton)
    ' Do your thing '
    Dim tb As TextBox
    Set tb = GetTBByName(s.Name)
    PutValueToDatabase(s.Name,tb.Text)
    ' Etcetera... '
End Sub

每个按钮都需要一个存根,因此首先需要进行一些复制和粘贴,但随后易于维护等等,因为所有 _Click 事件回调都指向相同的方法...

编辑: 例如。

Sub AutoWriteTheStubs()
    Dim theStubs As String
    Dim i As Long
    For i = 1 To 10
        theStubs = theStubs & "Private Sub Value" & CStr(i) & "Cmd_Click()" & vbCrLf _
                   & "    Call TheMethod(Value" & CStr(i) & "Cmd)" & vbCrLf _
                   & "End Sub" & vbCrLf & vbCrLf
    Next i
    Debug.Print theStubs
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA许多按钮指向同一个_Click sub 的相关文章

  • 如何获取数据透视表的 ListObject 对象?

    这个问题最初是作为answer https stackoverflow com a 21321664 2712565作者 休 西格雷夫斯 Hugh Seagraves 关于相关问题的文章 他 想要引用一个工作表上的列表对象 表格 而另一工作
  • 使用 C# 在 Excel 中查找和替换文本

    我想使用 C 在 Excel 中查找并替换一组文本 而且我希望此替换仅发生在第一行中的文本 我已经使用Google并找到了一些付费资源 例如Aspose API Spire Xls等 但我正在寻找开源资源或任何其他有效的方法来实现这一目标
  • 在 Python 中绘制 Excel 中的数据

    我必须从 Excel 文件中读取和绘制数据的代码是这样的 import pandas as pd import matplotlib pyplot as plt excel file file1 xlsx file1 pd read exc
  • excel使用单元格引用作为逻辑运算符并查找值

    我有一个表来查找这样的值 logical test points lt 0 1 lt 10 2 lt 20 4 gt 20 5 如果我的单元格 例如 A1 如果我的单元格 如果我的单元格 gt 20 则结果为 5 我可以为此使用多个 if
  • 通过 Excel VBA 保存并关闭 powerpoint

    下面的代码根据定义的名称创建多个图表 然后打开具有这些定义的名称的 powerpoint 文件并转储到图表中 除了最后一部分之外 一切都正常 保存并关闭文件 我已将尝试保存和关闭文件的尝试标记为绿色 任何帮助表示赞赏 Sub Slide19
  • Excel,多个 IF AND 更高效的公式

    我正在制作一个电子表格 如下所示 Index Diff Exc Sym Sec Result Criteria Met 3 42 2 07 0 86 0 92 1 83 1 95 0 38 2 93 0 87 0 23 2 01 0 09
  • 在单元格更改时循环遍历一系列单元格,以将序列中的下一个数字显示为单元格的新值

    我了解如何循环范围 For Each cell In Range A1 A5 If condition Then End If Next 我知道 OnChange 事件 Private Sub Worksheet Change ByVal
  • 如何锁定特定单元格但允许过滤和排序

    我使用以下代码来锁定某些单元格的内容 Sub LockCell ws As Worksheet strCellRng As String With ws Unprotect Cells Locked False Range strCellR
  • 自动计算Excel VBA UDF与单元格属性相关

    我编写了一个 UDF 来计算特定颜色和特定线条样式的单元格 我发布了整个函数 Function CountTime rData As Range cellRefColor As Range As Variant Dim indRefColo
  • VBA删除列中的单元格并根据单元格的值左移?

    如果单元格为空 如何删除 B 列 和左移 中的单元格 下面是我所拥有的 但它给出了 应用程序定义或对象定义的错误 Sub DeleteCellShiftLeft For i 1000 To 1 Step 1 If Cells i B Val
  • Excel:查找和替换宏 - 仅一列

    我编写了一些宏来将大量数据格式化为相同的可接受格式 我们从中提取的程序拒绝按照我们想要的方式提取数据 但理论上在 Excel 中更改并不难 它设置运行的方式是为修饰符使用单独的宏 然后使用 全部运行 宏来调用所有修饰符 目前我有 Sub R
  • 如果单元格 = 0,则将范围复制到主表并从主表中删除范围

    有 10 个工作表 工作表 1 工作表 10 其表处于相同范围 C25 G34 和 C42 N51 如果 总重量 列的值 gt 0 则必须复制这些行 复制的行将转到两个汇总表 前往 Westrock 表 gt Westrock 汇总表 前往
  • 尝试使用 Excel 中的 VBA 从网页中提取一个值

    我几天来一直在尝试查找信息 但是我找到的所有示例都只有一小段代码 我需要全部 我想要做的是从主页中提取一个值并将其放入 Excel 的单元格中 然后从同一站点上的另一个页面获取另一个值并放入下一个单元格等 该页面是瑞典证券交易所页面 我用作
  • 如何通过VBA宏遍历Word文档中的文本

    我想通过宏来计算 Word 文档中的字符 我不知道如何获取 Visual Basic 宏中文本的两个参考并浏览它 我想计算文档中每个字符的数量 例如文档中 ABZBB A x 1 B x 3 Z x 1 Sub Macro1 Dim Box
  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 具有日期和名称标准的 SUMIFS...仅限月份和年份

    我正在尝试获取 SUMIFS 公式来检查日期列 并仅对与标准日期的匹配年份和月份相对应的值求和 我还希望此 SUMIFS 包含名称标准和日期 IE 单元格 A1 SUMIFS Sheet1 O O Sheet1 D D Sheet2 DAT
  • VBA MS-Word:是否可以用通配符替换文本?

    是否可以替换使用通配符找到的文本并将其也替换为通配符 例如FindText 13 2 13 Forward True MatchWildcards True 然后用这样的通配符替换它replacewith 13 2 11 是否可以 评论中的
  • 如何连接以逗号分隔的命名范围的返回值

    我花了几个小时试图找出如何连接命名范围中的返回值 但结果是 运行时错误 32 类型不匹配 作为一个新手 我仍在与数组作斗争 所以也许我忽略了一些细节 谢谢你帮助我 示例 B1 苯 B2 柴油 B3 混合动力 gt E1 汽油 E2 柴油 E
  • 从新的 xlsx 文件中删除宏

    功能部分 下面的代码将 xlsm 文件中的 2 个选项卡保存到新的 xlsx 文件中 文件保持打开状态以进行编辑 错误 xlsm 选项卡在工作表代码中有触发器 该触发器无效 一旦在 xlsx 工作表中输入任何内容 就会导致错误 所需输出 编

随机推荐

  • ptrace 在 Linux 中如何工作?

    The ptrace系统调用允许父进程检查附加的子进程 例如 在 Linux 中 strace 这是通过实现ptracesystem call 可以检查子进程调用的系统调用 当附加的子进程调用系统调用时 可以通知 ptracing 父进程
  • 使用 javascript 触发灯箱

    我想使用这个库 http lokeshdhakar com projects lightbox2 http lokeshdhakar com projects lightbox2 我无法附加rel lightbox 每个图像 所以我想使用
  • java 如何使用扫描仪读取段落并计数

    例如 如果文件中有以下几行文本 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子
  • 连接 pandas 中的列表 - 使用 PyCharm 发出警告

    这是一个最小的可重现示例 用于获取我不明白的警告 我的数据框 前 5 行 如下所示 10 列 每列都填充了一个字符串列表 Index HLA A1 D HLA A2 D HLA B1 D HLA B2 D HLA C1 D HLA C2 D
  • 在“获取源”步骤之后,TFS 保持不同步

    We migrated to TFS 2015 RTM recently and were successful in creating build pools configuring build agents and build defi
  • 创建静态库

    我正在尝试创建一个静态库以在我的 PHP 扩展中使用 为此 我正在编译我的 c文件使用gcc c file c o file o并获得 o文件 然后我用ar rcs lib a o将所有编译的对象归档到 a file 完成此操作后 我指的是
  • haskell负十进制数[重复]

    这个问题在这里已经有答案了 可能的重复 Haskell 中的负双精度数或浮点数 macports https stackoverflow com questions 4101599 negative doubles or floats in
  • 表单验证如何排除输入字段?

    我正在关注 bootstrap 4 表单验证https getbootstrap com docs 4 0 components forms validation https getbootstrap com docs 4 0 compon
  • 如何在 Context.MODE_PRIVATE 中创建嵌套文件夹和文件?

    我有一个要求 需要使用嵌套结构编写文件和文件夹Context MODE PRIVATE 我发现我们可以使用创建文件openFileOutput FILENAME Context MODE PRIVATE 并能够使用此方法创建文件 但后来我发
  • 如何从我的应用程序中启动 Mail.app 中的新消息窗口

    我可以使用命令启动 Mail app NSWorkspace共享工作空间 launchApplication Mail app 但我想在 Mail app 中启动新消息窗口 而不是整个 Mail app 我怎样才能这样做呢 我得到了答案 N
  • 从文件返回细节,python

    我有这段代码 我正在尝试计算以下内容的数量 py 脚本中的代码行 for loops 对于 while loops 同时 if 语句 如果 函数定义 def 乘号 除号 加号 减号 在数学符号上 代码可以工作 但是当代码寻找 if 语句时
  • 如何使用cmd/批处理文件删除目录中名为x的所有文件夹

    我有一个名为 x 的文件夹 其中包含许多子文件夹和文件 我想删除 x 中存在的名为 y 的文件夹及其所有子文件夹 必须删除的所述文件夹可能包含也可能不包含任何文件 我相信我可以使用 cmd 或某种批处理文件来完成此操作 但我是一个命令行新人
  • 在位图样式设计器中更改字体

    Delphi XE7 提供了 位图样式设计器 工具 工具 gt 位图样式设计器 可用于为您的 Metro 主题应用程序编辑和创建样式 更改按钮 复选框和标签的图形和颜色很有效 而且看起来很漂亮 但如何更改字体设置呢 更准确地说 我该怎么做才
  • 比亚恩会犯错误吗? (一边解释模板),还是我还是不明白?

    伙计们 我正在做 C 编程语言第三版 的练习 第 340 页有一个函数示例 template
  • 确定文件是否为空(SSIS)

    我正在尝试在 SSIS 2005 中开发一个包 我的过程的一部分是检查网络上的文件是否为空 如果不为空 则需要传递成功状态 否则 需要传递不成功状态 我想我需要一个脚本任务 但不知道如何去做 任何帮助表示赞赏 Create a connec
  • 保留 Emacs 中的窗口布局

    我已经以某种方式设置了我的窗口 如何保存此设置以供以后调用 我有时还是用C x r w
  • 验证本地 Laravel Homestead 服务器上的自签名证书

    我按照以下详细信息创建了 SSL 证书 因此我可以使用 https 通过 Laravel 的 Homestead 运行本地测试站点 在 homestead 虚拟机上添加 https 证书 https stackoverflow com qu
  • UITableViewController 背景图片

    如何设置图像UITableViewController 我使用了很多东西 但它不能帮助我将图像设置为背景 UIImageView bgView UIImageView alloc initWithImage UIImage imageNam
  • 在 r 绘图文本中指定小数位?

    我尝试格式化在基本图形系统中创建的回归曲线的标签 基本上 该标签从变量中提取斜率 截距和 r 方值 示例如下 plot rnorm 10 type n xlim c 0 100 ylim c 0 100 text x 0 y 100 adj
  • VBA许多按钮指向同一个_Click sub

    我的表单上有一堆文本框按钮对 单击按钮时 我想将文本框的值插入数据库 名称 文本框 和 按钮 遵循命名标准 例如 Value1Tb Value1Cmd 和 Value2Tb Value2Cmd 我的问题是 因为我想对每个按钮执行相同的操作