从一组 ActiveX 选项按钮返回索引值

2024-03-12

首先我要声明我是一名医学生,而不是程序员。我编写了一个电子表格,可以作为包含 50 个问题的考试。每个问题都有 15 个多项选择答案,我使用 ActiveX 选项按钮将其分组到每个问题编号。

我使用 Activex 而不是表单选项按钮,因为我将考试中的原始数据转储到工作表的隐藏区域,并且每个选项按钮标题引用原始数据中的一个单元格以显示不同的答案选择。这样,我只需添加问题和答案选择表即可轻松创建新考试。我不知道如何使用表单选项按钮执行此操作。

但 ActiveX 选项按钮似乎无法将索引值返回到单个单元格。因此,我为每个按钮编写了以下内容:

Sub OptionButton1_Click()
  Range("B21") = "A"
End Sub

Sub OptionButton2_Click()
  Range("B21") = "B"
End Sub

Sub OptionButton3_Click()
  Range("B21") = "C"
End Sub

... 等等。每个问题有十五个按钮。五十个问题。我的工作表加载速度非常慢,并且总是在速度较慢的计算机上崩溃。必须有一种更简单的方法。有什么建议么?理想情况下,我想要一小段代码,只要选择该组中的任何选项按钮,就可以将索引值从每个组返回到特定单元格。任何帮助将不胜感激。

另一方面……如果有人可以帮助我弄清楚如何更改表单选项按钮的标题以引用给定的单元格,那么基本上可以帮助我实现的另一个帮助就是。这也能解决我的问题。


创建组事件的方法是使用自定义类来包装要分组的控件,并使用模块级集合来保持包装器类引用处于活动状态。

查看您的工作簿后,我确定您可以根据选项按钮的名称派生索引。

类:OptionWrapper

Option Explicit

Public WithEvents MyOptionButton As MSForms.OptionButton

Private Sub MyOptionButton_Click()
    Dim Letters()
    Dim lRow As Long, lAnswer As Long, ID As Long
    Letters = Array("O", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N")

    ID = Replace(MyOptionButton.Name, "OptionButton", "")

    lRow = Int(ID / 15 + 1) * 21
    lAnswer = ID Mod 15

    Cells(lRow, "B") = Letters(lAnswer)

End Sub

考试工作表代码模块

Private OptionsCollection As Collection

Private Sub Worksheet_Activate()
    Dim obj As OLEObject
    Dim wrap As OptionWrapper

    Set OptionsCollection = New Collection

    For Each obj In ActiveSheet.OLEObjects

        If TypeOf obj.Object Is MSForms.OptionButton Then
            Set wrap = New OptionWrapper
            Set wrap.MyOptionButton = obj.Object
            OptionsCollection.Add wrap
        End If

    Next
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从一组 ActiveX 选项按钮返回索引值 的相关文章

随机推荐

  • Javascript DOM .querySelector() null 问题

    我正在用纯 JavaScript 编写代码 有很多场景我会使用querySelector 方法 我多次遇到问题 比如 对于以下代码 未捕获类型错误 无法读取 null 的属性 classList document querySelector
  • 使用 Docker compose 传递 Dockerfile 的参数

    我正在尝试在构建阶段使用参数化我的 dockerfiles 并在 Docker compose 中使用参数 例如 在 Docker compose 中 我定义了一项名为 bpp 的服务 如下所示 bpp build context dock
  • 如何在 Flutter 中检测另一个应用程序是否打开?

    已编辑 我想创建一个阻止使用社交媒体应用程序的应用程序 就像他们打开 Instagram 或其他东西一样 Flutter 应用程序就会知道 当我的 Flutter 应用程序打开时 如何检测另一个应用程序 例如 Instagram 或 Twi
  • 数据集可扩展吗?像 myspace 这样的网站会使用它们进行数据检索吗?

    数据集的可扩展性如何 团队成员希望使用数据集进行数据检索和操作 使用内置的数据完整性等来使用对象执行数据更新等 我们的系统预计将扩展到数百万用户 我读到的所有内容都是针对企业环境中的数据集的 我在这里错了还是什么 免责声明 这些是我根据个人
  • 使用 Objective-C 以编程方式释放系统内存

    所以 这就是我想做的 释放系统内存 非活动内存 以同样的方式purge命令确实如此 尽管是以编程方式 我已经尝试过这里的代码 其作者声称它有效 但它所做的只是导致 Mac OS X 冻结 void free up memory int c
  • Prolog - 回文函子

    我正在尝试写一个谓词palindrome 1在 Prolog 中 当且仅当其列表输入由回文列表组成时 这才是正确的 例如 palindrome 1 2 3 4 5 4 3 2 1 is true 有什么想法或解决方案吗 回文列表是一个向后读
  • AutoLayout,无法同时满足约束

    刚刚开始学习 iOS AutoLayout 界面构建器非常简单 但是当我尝试在代码上存档相同的内容时 self view addConstraints NSLayoutConstraint constraintsWithVisualForm
  • 防止 ASP.NET 对输出中的字符串进行编码

    当页面呈现时 如何阻止 ASP Net 对列表项中的锚标记进行编码 我有一个对象的集合 每个对象都有一个链接属性 我执行了 foreach 并尝试在 BulletedList 中输出链接 但 ASP 对所有链接进行了编码 任何想法 谢谢 这
  • RxJava-在 Observable 链中执行 peek() 或 void 操作?

    Java 8 lambda 流有一个peek 运算符允许您对每个项目执行 void 操作 这通常用于调试 但它也是一种欺骗和启动 void 操作而不映射到某些内容的好方法 RxJava 中有类似的东西吗 也许我没有遵循良好的实践或反应性思考
  • 如何在 Aptana Studio 3 中设置默认文件权限?

    每次我将文件上传到远程主机并尝试打开它时 我都会收到 内部服务器错误 消息 并且文件权限设置为 666 需要设置为 644 才能打开 如何将默认文件权限设置为 644 打开首选项对话框 Window gt Preferences 然后前往
  • Python Flask Heroku 无法导入模块

    我收到以下错误 ModuleNotFoundError No module named class1 结构 hello world src init main class1 Procfile The main1文件看起来像这样 from c
  • Objective_C 中 UIView 的背景颜色是如何处理的?

    我一直在玩一些苹果的示例代码 http developer apple com library ios samplecode TableViewSuite Introduction Intro html apple ref doc uid
  • jQuery Mobile - 无法将 pagebeforechange 绑定到页面 id?

    我只能将 pagebeforechange 绑定到整个 jquery mobile 文档 而不是单个页面 谁能解释为什么this http jsfiddle net kenw232 HYzYJ 不起作用 div data role page
  • 什么算作解析请求?

    由于条款的更改 Parse 现在限制了每秒的请求数量 这是一件好事 但是 Parse Push 和 Parse Analytics 算作请求吗 每当您通过 iOS Android JavaScript Windows Xamarin Uni
  • 在非 Metro 应用程序中使用自定义 Windows 运行时组件

    想象一个场景 您有一个复杂的 WinRT 代码框架 您希望从 C Metro 应用程序和 C 桌面应用程序访问该框架 有没有办法将 WinMD 包含在非 Metro 应用程序中 UPDATE 这仅适用于 Windows 8 Microsof
  • 在 C# 中将数据表转换为 JSON

    我想将记录从数据库获取到DataTable 然后转换DataTable转换为 JSON 对象 将 JSON 对象返回到我的 JavaScript 函数 I use this https stackoverflow com questions
  • phpMyAdmin + CentOS 6.0 - 禁止

    当我想访问我的 phpMyAdmin 时 我总是收到此消息 w3m localhost phpmyadmin Forbidden You don t have permission to access phpmyadmin on this
  • 从 angularjs 指令触发点击事件

    如何触发 li 元素的点击事件 并从 angularjs 指令指定其索引 我尝试使用 first 来触发第一个元素的点击 但它不起作用 谢谢你的帮助 这也许是您实现这一目标的另一种方法 将索引和项目传递给指令 并让指令在模板中设置 html
  • 解构神奇宝贝故障?

    如果这是问这个问题的错误地方 我深表歉意 我认为这肯定与编程相关 但如果这属于其他网站 请告诉我 我从小就玩神奇宝贝红和蓝 这些游戏非常有趣 但因存在许多可利用的故障而臭名昭著 例如 请参阅这个游戏的荒谬的速通 http www youtu
  • 从一组 ActiveX 选项按钮返回索引值

    首先我要声明我是一名医学生 而不是程序员 我编写了一个电子表格 可以作为包含 50 个问题的考试 每个问题都有 15 个多项选择答案 我使用 ActiveX 选项按钮将其分组到每个问题编号 我使用 Activex 而不是表单选项按钮 因为我