编译错误:只有在公共对象模块中定义的用户定义类型可以强制转换为变体或从变体强制转换或传递给后期绑定函数

2024-02-03

我正在努力学习一些 VBa 和 Excel。我需要在 VBa 中创建一个结构,它是Type。我遇到的问题是,当我尝试执行代码时收到一条错误消息!我觉得我需要解释一下我是如何到达现在的位置的,以防我犯了错误。

我读过要创建一个类型,它需要公开。因此,我创建了一个新类(在类模块下)。在Class1中,我写了

Public Type SpiderKeyPair
    IsComplete As Boolean
    Key As String
End Type

并在之内ThisWorkbook我有以下内容

Public Sub Test()    
    Dim skp As SpiderKeyPair
    skp.IsComplete = True
    skp.Key = "abc"    
End Sub

没有其他代码。我遇到的问题是收到错误消息

无法在对象模块中定义公共用户定义类型

如果我将类型设置为私有,则不会收到该错误,但当然我无法访问该类型的任何属性(使用 .NET 术语)。

如果我将代码从 Class1 移动到 Module1 中,它就可以工作,但是,我需要将其存储到一个集合中,这就是它出错的地方,也是我陷入困境的地方。

我已经更新了我的Test to

Private m_spiderKeys As Collection 

Public Sub Test()                
    Dim sKey As SpiderKeyPair
    sKey.IsComplete = False
    sKey.Key = "abc"            
    m_spiderKeys.Add (sKey)    'FAILS HERE            
End Sub

只有在公共对象模块中定义的用户定义类型可以强制转换为变体或从变体强制转换或传递给后期绑定函数

我已经研究过这个,但我不明白我需要做什么...如何将 SpiderKeyPair 添加到我的集合中?


遇到了完全相同的问题并浪费了很多时间,因为错误信息具有误导性。我怀念 List。

在 Visual Basic 中,您不能真正将所有内容都视为对象。您的结构和类在内存分配方面存在差异:https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/structurals-and-classes https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/structures-and-classes

类型是一种结构(数组也是),因此如果您想要它们的“列表”,您最好使用数组及其附带的所有内容。

如果要使用Collection来存储“List”,则需要为要处理的对象创建一个Class。

并不令人惊奇......但这就是该语言所提供的。

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

编译错误:只有在公共对象模块中定义的用户定义类型可以强制转换为变体或从变体强制转换或传递给后期绑定函数 的相关文章

  • 如果字符串包含列表中的单词,则返回与列表值相邻的值

    目前我有一组单元格 每个单元格在无用的信息中都有一个唯一的标识符 我还有这些唯一标识符的列表 以及每个标识符对应的值 我想做的是找到一个单元格包含哪个标识符 如果有的话 然后输出相应的值 下面是一个例子 https i stack imgu
  • 复制列中的所有单元格[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一张表 有 200 行 行间有一
  • FileDialog 保留以前的过滤器

    我正在 Access 数据库中制作表单 我需要打开文件对话框窗口几次 我只是不明白为什么在我更改选项值几次并打开文件对话框窗口后它没有更改过滤器 Public Sub Command17 Click Dim fd As FileDialog
  • schema.ini 文件不适用于 MS Access

    我有一堆 csv 文件 我通过 VBA 将它们导入到 Access 中的表中 我在与导入的 csv 文件相同的目录中还有一个 schema ini 文件 尽管在 ini 文件中字段被指定为双精度类型 但它们在 Access 中会转换为文本类
  • 将所有工作簿工作表复制到新工作簿 VBA

    我正在使用此代码将工作簿中的每张工作表复制到新工作簿中 它工作正常 但它颠倒了工作表的顺序 是否有办法阻止它这样做 Sub copy copies all the sheets of the open workbook to a new o
  • 如果 FIND 函数在 vba 中找不到任何内容,那么[重复]

    这个问题在这里已经有答案了 我目前正在自动化执行以下步骤的手动流程 1 提示用户打开一个数据文件并打开文件 2 插入4列 3 使用文件中已有的数据创建格式为 DD MM YYYY TEXT 的唯一字符串 其中文本是变量 4 使用 if 语句
  • 运行时错误“1004”:对象“_Global”的方法“Range”失败

    我在使用 Excel 时遇到问题 有一个生成参考号的表单 但是当我尝试生成参考号时 它有一条错误消息 运行时错误 1004 对象 Global 的方法 Range 失败 当我点击 调试 按钮时 它显示的代码如下 它突出显示代码第 4 行的错
  • 在 VBA 中使用 getElementsByClassName

    我正在使用此代码从页面获取产品名称 页面代码是 div class product shop col sm 7 div class product name h1 Claro Glass 1 5 L Rectangular Air Tigh
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • 查找并替换目录中所有 Excel 文件工作簿中的字符串

    我正在编写 VBA 代码来替换位于特定目录中的多个 Excel 文件 工作簿 中的特定字符串 我尝试在 Stack Overflow 上搜索 找到答案 但这与通过 Excel 中的宏替换文本文件中的字符串有关 相同的链接是查找并替换文件中的
  • MS Access 执行 POST Web 请求

    在我的 MS Access 应用程序中 我需要定期向我的网络服务器发送一批信息 我不需要任何花哨的东西 比如 SOAP XML RPC 或任何东西 只需一个简单的 POST 页面请求就足够了 我用谷歌搜索了一下 但找不到任何真正有用的东西
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • Word通过vba宏删除tabe列出现错误

    我想将excel中的数据复制到word表中 然后从表中删除一些列 我可以将数据复制到表中 但是当我删除列时会出现错误 无法访问此集合中的各个列 因为该表具有混合的单元格宽度 我的代码 Public Tbl1 As Table Sub cal
  • 根据单元格值向用户窗体添加复选框

    我对 VBA 很陌生 只有 3 天 但我发现它非常有用且易于使用 但现在我面临一个问题 我需要制作一个具有不同复选框的用户窗体 但我需要根据工作表某一列中使用的信息自动添加它们 我相信我可以使用 For Each Next 但我真的不知道如
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 使用 VBA 将 Excel 电子表格中嵌入的 Word 文档保存到磁盘

    我们有一个 Excel 电子表格 当前使用存储在公司 LAN 上的 Word 模板生成报告 这对于内部用户来说效果很好 但对于没有连接到 LAN 的任何人来说就不行了 例如 笔记本电脑用户 管理层不希望将模板作为单独的文件分发给外部用户 而
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • VBA Excel:将范围值分配给新范围

    我在将一个工作簿范围中的值分配给当前工作簿中的某个范围时遇到问题 当我使用 Range A1 C1 分配我的范围时 此代码工作正常 但是当我使用 Range Cells 1 1 Cells 1 3 定义我的范围时 该函数会失败 Sub Co

随机推荐

  • 解析宏变量名称中包含 %eval 的宏,SAS

    这是一个玩具示例 旨在帮助解决我遇到的更大问题 它本质上涉及在引用更大的宏变量名称时使用 eval 宏 我创建了一个宏变量 x 2 它使用循环 it 的值 从最终输出可以看出该变量已成功创建 但是我只能将其放入日志而不评估 it 1 这当使
  • 是否有贝叶斯信念网络框架“Infer.NET”的 java 替代品?

    java 是否可以替代贝叶斯信念网络框架 Infer NET 如果它具有可扩展性 大型数据集的在线学习 良好的支持 自 2010 年以来最新更新 开源且易于编写网络结构 则更好 所有功能均来自 Infer NET 你也许还应该考虑Samia
  • 应用程序最小化时的 Electron win.flashFrame() 方法

    win flashFrame 使托盘图标闪烁 直到单击该图标并且应用程序窗口再次回到焦点 在 Windows 10 上 但是 如果应用程序最小化 闪烁会在几秒钟后自动结束 甚至无需单击图标 我怎样才能防止这种情况发生 如果窗口最小化 用户将
  • 对对象列表进行排序的算法

    假设您有一个对象列表 用户在工作时几乎使用所有对象 如何对对象列表进行排序 以便列表适应用户最常使用的顺序 您可以使用什么算法来实现这一点 编辑 许多答案建议计算对象的使用次数 这是行不通的 因为所有对象都使用相同的数量 只是顺序不同 在你
  • 在 iPhone UITextView 上打字(如 Twitter)时建议 # 个标签

    我正在构建一个使用主题标签的应用程序 例如 Twitter 或 Tweetbot 当您输入消息时 如果您输入主题标签符号 我会建议与您当前输入的标签相匹配的标签 我已经弄清楚如何让 UITableView 出现并显示主题标签列表 但我不知道
  • 修改音频样本缓冲区的音量增益

    我想增加语音数据缓冲区的音量 重点是我正在使用 DirectSound 并且我有一个主要缓冲区和一个辅助缓冲区 所有流混合都是手动完成的 在语音聊天中 所有参与者都可以拥有独立的音量级别 我将每个流数据乘以一个值 增益 并将其求和到一个缓冲
  • 如何使用键盘快捷键向上/向下移动 Jupyter 笔记本单元格?

    有人知道在 Jupyter 笔记本中向上或向下移动单元格的键盘快捷键吗 找不到捷径 有什么线索吗 以下解决方案适用于 JupyterLab 我目前拥有版本 2 2 6 您必须首先打开键盘快捷键配置文件 在 JupyterLab 中 您可以在
  • Jetty 7:为 Start.java 配置 JNDI

    遵循 Wicket 1 5 的指导 我将项目从 Jetty 6 1 25 转换为 7 5 0 v20110901 我现有的Start java包含以下设置 我用它来配置 JNDI EnvConfiguration envConfigurat
  • Javamail ISO-8859-1 格式

    我使用 Javamail Api 为我的 Android 手机制作了一个电子邮件客户端 如果我尝试使用以下方法获取发件人的邮件地址和收件人的邮件地址 Address froma m getFrom String from InternetA
  • React-chartjs-2 与 ChartJs 3:错误“arc”不是注册元素

    我正在开发一个 React 应用程序 我想在其中显示图表 我尝试使用react chartjs 2 但我找不到让它工作的方法 当我尝试使用 Pie 组件时 出现错误 Error arc is not a registered element
  • StringBuilder.ToString() 的复杂性是多少

    在 C 中 复杂度是多少StringBuilder ToString 是 O 1 O N 还是其他 不同框架版本有所不同 在旧版本中StringBuilder工作于string直接 所以没有额外费用 ToString 它只是直接向您提供数据
  • 创建自定义错误消息 MySQL

    在 MySQL 中 如何为此错误消息创建自定义消息 无法删除或更新父行 外键约束失败 database jenis fasum 约束jenis fasum ibfk 1外键 id kategori 参考kategori fasum id k
  • 无法使用 OpenCV 保存图像

    我试图保存视频文件中的图像 但它无法在我的硬盘驱动器中保存任何图像 我编译了以下程序 没有错误 include
  • UIScrollView 滚动事件阻止 UIView 动画

    我有一组 UIImageView 的动画 它们代表当前值并不断向上滴答作响 理想情况下永远不会停止 视图中也是一个滚动视图或滚动视图 每当我滚动或缩放滚动视图时 动画都会停止 并且当scrollView完全停止移动时再次启动 我相信这是由于
  • 如何在控制台应用程序中隐藏输出(而不是窗口)?

    好吧 让我再澄清一下 我有一个包含许多类的控制台应用程序 每个类中至少有一个 Console WriteLine text 行 我定义了一些参数 当运行应用程序时 它输出的正是我在类中编写的内容 在那里 我想定义一个参数 当我使用该参数运行
  • 有没有一种简单的方法可以通过 boto3 重命名 s3 文件夹?

    我有带文件夹的 s3 存储桶 文件夹内有大文件 我想用 python3 boto3 脚本重命名该文件夹 I read this https adamtheautomator com rename amazon s3 folder pytho
  • 如何使用输出参数调用 .net 方法?

    我只想打电话给生成脚本的方法Microsoft Data Schema ScriptDom Sql Sql100ScriptGenerator http msdn microsoft com en us library dd195523 a
  • Angular 2:在本地 .json 文件中找不到文件

    我看过一些不同的帖子 内容是无法找到本地文件来打开它们 无论它们是图像还是数据文件 但没有一个解决方案对我有用 我的猜测是我缺少一些配置 我正在查找的文件位于名为 data 的文件夹中 与我的 app html 和 app ts 文件位于同
  • 在 VS2012 中使用 'volatile' 关键字的最佳实践

    自从将我们的开发和构建环境从 VS2008 升级到 VS2012 以来 我对使用volatile我们的遗留代码库中的关键字 它非常广泛 因为有很多复制的模式用于管理 旧 时代的线程 微软在VS2012文档中有如下备注 如果您熟悉 C vol
  • 编译错误:只有在公共对象模块中定义的用户定义类型可以强制转换为变体或从变体强制转换或传递给后期绑定函数

    我正在努力学习一些 VBa 和 Excel 我需要在 VBa 中创建一个结构 它是Type 我遇到的问题是 当我尝试执行代码时收到一条错误消息 我觉得我需要解释一下我是如何到达现在的位置的 以防我犯了错误 我读过要创建一个类型 它需要公开