Excel-VBA - VBA 中有类似 Javas Set 容器的东西吗?

2023-12-01

VBA中有类似Java的Set容器的东西吗?我找不到任何东西,Google 似乎也没有帮助,因为 set 是 VBA 中的保留工作。

任何想法都会很棒。现在我唯一的选择是字典或数组。

Thanks.


VBA 有一个内置的“Collection”对象,许多人认为 MS Scripting Runtime 中的“Dictionary”对象足够标准,它本质上是 VBA 的一部分。

然而,两者都不会强制一般对象的唯一性。是否可以让它们为您的应用程序强制执行唯一性取决于细节。

例如,如果您想要一组字符串,这很容易。只需使用“字典”,并使用它的键作为您的“集合”。 “Dictionary”有一个“Exists”方法,因此编写您自己的有限“Set”类非常容易,其中所有实际工作都由包含的“Dictionary”完成。 (如果您使用的是 Excel,这将适用于任何简单的 Variant 值 - 字符串、数字、布尔值、错误。)

如果您有对象实例,事情会变得更加复杂。 “字典”对象can使用对象作为键,但它使用对象标识作为其相等性测试。例如,我刚刚在 VBA 立即窗口中输入以下内容:

set d=new Dictionary
set c1=new Collection
set c2=c1
d(c1) = 42
fv d
<Dictionary: keys: #V(0..0){<Collection: 0 elems: >}, items: #V(0..0){42%}>
d(c2)=99
fv d
<Dictionary: keys: #V(0..0){<Collection: 0 elems: >}, items: #V(0..0){99%}>
set c3=new Collection
d(c3)=101
fv d
<Dictionary: keys: #V(0..1){<Collection: 0 elems: >,<Collection: 0 elems: >}, items: #V(0..1){99%,101%}>

(“fv”是我用于调试的 VBA 例程 - 它只是打印出内容的字符串表示形式。)您可以看到相同的对象被视为相等,但完全相同valued物体则不然。

如果您需要一组具有自定义相等性测试的集合,则需要编写重要的代码。但是,如果您至少可以编写从对象实例到可用作字典键的值的映射,那么您仍然可以避免编写自己的“这个东西是否已经是集合的成员?”代码。

一些相关链接:

有没有办法为具有私有成员的 VBA 类编写相等测试而不暴露这些私有成员的存在?

VBA 中的哈希表/关联数组

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

Excel-VBA - VBA 中有类似 Javas Set 容器的东西吗? 的相关文章

  • 在 Excel VBA 中选择工作表范围

    我正在尝试在 Excel 宏中选择一系列工作表 以便可以打印它们 我想打印一个范围 即 Sheet2 Sheetx 其中 x 是一个变量 我尝试记录一个宏来执行我想要的操作 但它使用工作表名称而不是工作表引用 当然也不支持变量 在此示例中
  • wsimport Xauthfile 错误

    我正在尝试为我们公司网络外部的受 SSL 保护的 Web 服务 在 Microsoft Biztalk 上 生成客户端 也称为消费者 所需的 java 帮助类 我们只能通过代理访问它 并且无法更改 Web 服务本身的任何内容 这是我提供给
  • Amazon SQS 旧配置文件格式警告

    我正在将消息发布到 Amazon SQS 队列 启动时 我在日志中收到以下警告 http nio 9090 exec 2 BasicProfileConfigLoader The legacy profile format requires
  • 如何将背景图像设置到 JPanel 中的 JTextArea

    我想在JTextArea 我在谷歌上查找过 但没有结果 背景可能是一个标志 我也想知道如何设置背景的分辨率 我的包中只有一门课 我有一个 MySQL 连接器驱动程序作为参考库 我的工作台是 Eclipse 使用 Fat jar 插件导出 j
  • 用零向左填充字符串[重复]

    这个问题在这里已经有答案了 我见过类似的问题here https stackoverflow com questions 388461 padding strings in java and here https stackoverflow
  • Java 似乎找不到我的本机库

    我正在尝试从我的 jar 中运行我的程序 名为 PViz jar 该 jar 位于一个目录中 其中包含所有依赖的 jar 以及它们所依赖的 so 文件 我使用的是 Mac OS X 当我运行此命令时 java cp PViz jar pvi
  • 从枚举返回计算值

    我的问题有两个而且很简单 按原样误解枚举 这个想法在我的代码中缺少一些重要的抽象 代码示例 其中oprt calc x y 无法编译 有警告cannot find symbol public enum Operation PLUS publ
  • JOOQ初始化DAO最佳方法

    我想知道初始化 JOOQ 生成 DAO 的最佳实践 现在 我使用以下方法来初始化 JOOQ 生成的 DAO 在以下情况下 Student Dao 是 JOOQ 生成的 public class ExtendedStudentDAO exte
  • Scala - InvalidClassException:没有有效的构造函数

    我创建了一个Serializable番石榴的版本ImmutableRangeMap and Builder在 Scala 中以便在我的 Spark 应用程序中使用 我的构造函数中有一个零参数SerializableImmutableRang
  • Spring 在使用 JUnit 的单元测试中不自动装配

    我使用 JUnit 测试以下 DAO Repository public class MyDao Autowired private SessionFactory sessionFactory Other stuff here 正如您所看到
  • 我在这个正则表达式中做错了什么?

    我正在做一个关于正则表达式的学校作业 我先解释一下 我必须编写一个正则表达式来检查 URL 我必须检查的条件是 URL 是 http s 还是 ftp s 域名是 nl 还是 edu 至少有一个第三级域名 但如果该域名以 万维网 必须有一个
  • 如何设置鼠标监听器的优先级

    我有一个带有列表和按钮的面板 名单已定MouseAdapter with mouseClick 我添加到面板MouseAdapter with mousePressed and mouseReleased and MouseMotionAd
  • 是否有更现代的面向对象版本的“让我们构建一个编译器”? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有更现代的 也许是面向对象的 相当于 Jack Crenshaw 的 让我们构建一个编译器 http
  • Java错误:不是一个语句,我不知道为什么?

    我真的不确定是什么导致发生这个编译时错误 我一直在试图弄清楚 但似乎找不到问题所在 ClassTable java 253 error not a statement class c class classes nextElement Cl
  • 在某一方面,在同一连接点上组合操作前、周围和后建议时,建议优先级不明确

    请考虑这个简单的 Java 代码 public class Application public void m int i System out println M with argument i public static void ma
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • Log4j 不打印完整的堆栈跟踪

    我检查了 SO 中的所有答案 但没有一个真正帮助我 我的 Log4j 属性文件 log4j rootLogger debug console file log4j appender console org apache log4j Cons
  • 在 OpenCV 中将 `BufferedImage` 转换为 `Mat`

    我怎样才能转换BufferedImage to a Mat in OpenCV 我正在使用 JAVA 包装器OpenCV not JavaCV 由于我是新手OpenCV我在理解如何做时遇到一些问题Mat works 我想做这样的事情 基于
  • 如何用java实现FTP?

    我正在使用 FTP 我必须在客户端将消息嵌入到图像文件中 并且我必须将其发送到服务器 在服务器端我必须检索图像文件并然后我将检索该消息 我已经完成了嵌入消息并使用密码学和隐写术技术检索消息 我正在寻找如何将该文件从客户端传输到服务器 我必须
  • 我可以为每个片段单独提供工具栏吗?如何处理导航抽屉

    在我的应用程序中 某些页面的工具栏中有自定义视图 有些片段具有透明工具栏 有些片段具有坐标布局滚动 因此 我决定为每个片段单独设置工具栏 我想知道这是否是一个好的做法 如果有人已经这样做了 请分享代码或示例 您可以在片段中使用自定义工具栏

随机推荐

  • Android AlarmClock 按标签搜索

    我想使用意图android provider AlarmClock消除 ACTION DISMISS ALARM 特定警报 我想使用 ALARM SEARCH MODE LABEL 来选择警报 但是 我不知道如何设置要搜索的标签 Inten
  • jquery:查找一个元素下面的元素

    我正在使用 jquery 创建一个简单的应用程序 在这个应用程序中我可以沿着文档拖动一个元素 DIV 我可以将 DIV 放置在文档中的任何位置 如果我将此 DIV 放置在另一个元素上方 我如何找出拖动对象下方元素的 ID 是什么 例如 如果
  • 集成测试前启动 Apache tomcat 服务器

    过去 4 天我一直在寻找解决方案 并作为赏金提出了这个问题 但仍然没有得到答案 我在 pf pom xml 文件的帮助下取得了成功 a 使用命令手动启动 tomcat 服务器 即 mvn tomcat7 run 该命令还 帮助我将 war
  • C# 中的 Curl -F 等效项

    我正在尝试使用 C 中的 HTTPClient 对象向 API 发送发布请求 这是 CURL 命令 curl X POST https zzz zzz zzz yyy F Key abcd F media audio aac 我写了以下代码
  • UITextView 富文本?

    我想知道 UITextView 是否可以显示富文本 我想对只读文本进行简单的格式化 例如文本不同部分的不同对齐方式 如果没有 我应该使用什么视图 一般来说 最好的方法是使用 UIWebView 并加载本地内容 您可以在其中插入标签和您需要的
  • 告诉 cin 在换行处停止阅读

    假设我想从输入中读取 a 行整数 如下所示 1 2 3 4 5 n 我希望 cin 停在 n 字符处 但 cin 似乎无法识别它 下面是我用过的 vector
  • 用于检查 WooCommerce 中的product_type 的 SQL 查询

    我想通过以下方式过滤 WooCommerce 中的产品简单或可变的产品通过MySQL 但我找不到 WooCommerce 如何存储数据并在数据库中区分它们 我想要一个 MySQL 查询来列出所有简单和可变产品 我不需要任何 PHP 代码 就
  • Django value_list 与值

    在Django中 以下两者有什么区别 Article objects values list comment id flat True distinct versus Article objects values comment id di
  • 加载 Facebook 像素异步

    我正在加载 Facebook Pixel 并收到错误 因为调用时未加载脚本 它看起来是这样的 function Load3rdPartyScripts function f b e v n t s if f fbq return n f f
  • Android Studio 3.0 清单错误:发现未知元素

    NOTICE 请不要发布此内容 android enableAapt2 false 作为答案 这是not一个办法 它只是忽略真正的错误 不会在运行时造成任何问题 解决办法很简单 只要去掉错误放置的即可动作标签在清单文件中的意图过滤器之外 有
  • HTML5本地存储JSON多个对象

    有谁知道 当我在 javascript 中执行循环时 是否可以创建一个包含多个对象的本地存储 目前我的代码如下所示 var albums var album list each data function i item var name i
  • WordPress wp_editor() 不工作

    我使用了 wordpress 3 8 并创建了插件并显示了 wp editor but it look like this 这是我的代码 content edit id slider text editor wp editor conten
  • Three20 iPhone 照片库的 TabBar 支持

    我经过this教程并为 iPhone 创建了一个照片库 现在我想将它添加到我的 TabBar 项目中 我已经听说 Three20 不支持 XIB 所以我将整个选项卡栏设置更改为以编程方式 我想我距离最终解决方案已经不远了 我能够让照片库在一
  • 每个 Angular 项目都会生成大量文件

    我想为 Angular 启动一个简单的 hello world 应用程序 当我按照官方的说明进行操作时快速开始安装在我的项目中创建了 32 000 个文件 我认为这是一些错误或者我错过了一些东西 所以我决定使用角度 cli 但在设置项目后我
  • 仅开始活动一次

    我希望我的应用程序仅在应用程序第一次启动时启动活动 有人知道吗 我发现了这个 但它只显示黑屏 public class WhatsNew extends Activity public static final String PREFS N
  • 如何找到图像中的极值角点?

    从上面的源图像 源图像1 图像2 中 我想找到最极端的角点 并得到像目标图像1 图像2这样的点 即我画的红色圆圈点 其实我研究过Harris Shi Tomasi算法 但没那么极端 其实我已经尝试过良好的功能Totrack使用java代码
  • PHP + 从 iFrame 内发布 HTML 表单并重定向父级

    我想知道是否可以执行以下操作 在 HTML 页面内放置一个 iFrame 在 iFrame 内 我有一个 使用 PayPal 付款 按钮 当单击该按钮并将 HTML 表单提交给 PayPal 时 我希望父页面重定向到 PayPal 而不仅仅
  • 运行时错误:在应用程序上下文之外工作

    app py from flask import Flask render template request jsonify json g import mysql connector app Flask name class TestMy
  • 更改 UIView 中的坐标原点

    是否可以更改 UIView 中的坐标系 使 0 0 成为右上角 我的答案是禁止使用Interface Builder 但我知道没有其他方法 启动 UIView 后 执行 CGAffineTransform 如下所示 self view tr
  • Excel-VBA - VBA 中有类似 Javas Set 容器的东西吗?

    VBA中有类似Java的Set容器的东西吗 我找不到任何东西 Google 似乎也没有帮助 因为 set 是 VBA 中的保留工作 任何想法都会很棒 现在我唯一的选择是字典或数组 Thanks VBA 有一个内置的 Collection 对