带点运算符的常数 (VBA)

2024-04-09

我想要一个常量材料的目录,这样我就可以使用如下所示的代码:

Dim MyDensity, MySymbol
MyDensity = ALUMINUM.Density
MySymbol = ALUMINUM.Symbol

显然,铝的密度和符号预计不会改变,所以我希望它们是常数,但为了简单起见,我喜欢点符号。

我看到了一些选项,但我不喜欢它们。

  1. 为每种材料的每个属性设置常量。这看起来常数太多了,因为我可能有 20 种材质,每种材质都有 5 个属性。

    Const ALUMINUM_DENSITY As Float = 169.34
    Const ALUMINUM_SYMBOL As String = "AL"
    
  2. 定义一个包含所有材料的枚举,并创建返回属性的函数。密度是常数并不那么明显,因为它的值是由函数返回的。

    Public Enum Material
         MAT_ALUMINUM
         MAT_COPPER
    End Enum
    
    Public Function GetDensity(Mat As Material)
        Select Case Mat
            Case MAT_ALUMINUM
                GetDensity = 164.34
        End Select
    End Function
    

Const Structs 或 Const Objects 似乎无法解决这个问题,但也许我错了(它们甚至可能不被允许)。有没有更好的办法?


使 VBA 相当于“静态类”。常规模块可以具有属性,并且没有任何内容表明它们不能是只读的。我还将密度和符号包装在一种类型中:

'Materials.bas

Public Type Material
    Density As Double
    Symbol As String
End Type

Public Property Get Aluminum() As Material
    Dim output As Material
    output.Density = 169.34
    output.Symbol = "AL"
    Aluminum = output
End Property

Public Property Get Iron() As Material
    '... etc
End Property

这非常接近您想要的使用语义:

Private Sub Example()
    Debug.Print Materials.Aluminum.Density
    Debug.Print Materials.Aluminum.Symbol
End Sub

如果您在同一个项目中,您甚至可以删除显式的Materials限定符(尽管我建议将其明确化):

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

带点运算符的常数 (VBA) 的相关文章

  • 通过电子邮件搜索将 Excel 2003 中的数据行复制并粘贴到不同的工作表

    在任何人发表任何言论之前 我已经浏览了几篇与此类似想法相关的帖子 采用不同的搜索条件 然后对其进行修改 但我无法让宏正常工作 这可能是由于我缺乏编程知识 我想做的就是 search的电子邮件地址工作表1如果找到 则将整行复制到下一个空闲行工
  • 如何使用单元格内的十六进制颜色值突出显示单元格?

    我有一个符号和匹配的十六进制颜色的电子表格 我想用单元格内的十六进制颜色填充单元格本身 或其旁边的单元格 我读过一些有关 条件格式 的内容 我认为这就是实现的方法 我怎样才能达到我想要的结果 条件格式无法实现所有颜色 假设 Row1 包含数
  • 从数据集中提取唯一的产品 ID 和相应的其他列值到新工作表

    我有一个宏 可以从 A 列 中提取唯一数据 但我也希望从 A 列中的这些唯一值的其他列中获取相应的值 并且我希望它们位于不同的电子表格中 我尝试在代码中使用 Worksheet Vlookup 函数 但对于超过 70 000 行和 42 列
  • Excel 2007 Visual Basic 编辑器:占用空格,四处移动光标

    我无法解决这个问题 我发现了类似的问题here https stackoverflow com questions 1164138 vba editor auto deletes spaces at the ends of lines bu
  • C++ const 左值引用

    假设我有 A 类不可复制 类 B 具有 const A a 作为成员 并在其构造函数中采用 A 并将其设置在其初始化列表中 一个函数A GenerateA 这是否意味着执行以下操作应该有效 B 生成A 即 const ref 是否意味着ge
  • 将 vbCrLf 应用于文本框的内容

    我在 Excel vba 项目中有一个用户窗体 在设计时它是空的 在表单初始化事件中 我有以下代码 Private Sub UserForm Initialize txtSQL value SELECT MyName ColY vbCrLf
  • 在 VBA 中接收文件创建通知,无需轮询

    我正在编写一个与 ScanSnap 扫描仪集成的程序 ScanSnap 扫描仪不支持 TWAIN 扫描文档后 它会自动保存为 PDF 我想监视保存文件的目录 并在文件出现 并完成写入 时采取一些操作 一种简单的方法是使用 MS Access
  • 当单元格值和复选框更改时更改工作表

    我有一本包含多个工作表的工作簿 我有一个菜单页面 工作表 其中包含多个用户选择 输入新订单 更新订单等 每个选项旁边都有一个复选框 根据选中的复选框 单元格F4 F21改变自0 to 1并且 细胞B1更改我想要去的工作表的名称 我的主菜单工
  • Excel UserForm 动态 TextBox 控件退出事件

    UPDATE 经过对对象浏览器的进一步研究 看来MSForms TextBox既没有实现 Name财产或 Exit事件 仅 Change事件 有没有办法确定具体是哪个TextBox生成更改事件 或者可以使用MSForms Control用这
  • VBA:新集合 -> 模块不是有效类型

    我尝试使用集合作为函数的一部分 但是在编译时不断收到错误 模块不是有效类型 即使该函数只是定义一个集合 我也会得到相同的结果 Function CountUniqueTags Dim table As Collection Set tabl
  • 通过 Whatsapp 从 Excel 发送图片

    我们如何通过 Whatsapp 从 Excel 发送图片 我找到了通过以下方式发送消息的vba代码https web whatsapp com https web whatsapp com Sub Test Dim text As Stri
  • 空格键在 Excel VBA 编辑器中的行尾不起作用

    我将 Personal xlsb 移至新笔记本电脑 但遇到了一个奇怪的问题 空格键在行尾不起作用 除非它是完全空的行 示例 1 不起作用的示例 不工作 示例 2 工作示例 会工作 当我按空格键时 文本选择指针没有移动 但位置指示器在原始位置
  • 将数据从 Excel 导出到 Outlook

    我已经用 Excel 起草了一封电子邮件 其中填充了数据表中的信息 单元格 A1 到 A4 包含 嗨 希望你做得好 和消息 等等 A5到H10有一个包含信息的表格 A11到A30有类似 期待您的回复 的电子邮件内容 我只想复制 A1 A4
  • 使用 C 库时 C++ 中的常量正确性

    目前我正在开发一个 C 应用程序 我希望它是 const 正确的 意思是尽可能在参数上使用 const 之类的东西 然而 这个 C 应用程序使用了一个不经常使用 const 的 C 库 我遇到的问题是 当向 C 库中的函数发送参数时 参数不
  • VBA 下标超出工作簿名称范围

    我从网上拉了一些代码来打开文件夹中的最新文件 这似乎工作得很好 然而 在代码的后面 我添加了一行附加行来设置最近打开的同一文件 尝试此操作时 工作簿 subscipt 超出范围 我认为这与语法有关 可能需要在工作簿名称中添加额外的引号 有什
  • 使用 VBA 清除 Excel 单元格格式而不清除 NumberFormat

    是否可以在不改变 的情况下清除Excel单元格格式和内容 使用VBA NumberFormat 给定的单元格 我尝试过 ClearContents ClearFormats 但 ClearFormats 删除了数字格式细胞也 请建议 你可以
  • 将图表导出为图像 - 只需单击按钮

    我正在尝试创建一个按钮 将 图表 工作表中的图表导出为 jpeg 文件 这是我的代码 但它不断显示此错误 运行时错误 424 需要对象 具体来说 Set myChart Graphs ChartObjects 3 Name Chart4 这
  • 在 Word 2010 中复制形状而不使用 .Select?

    是否可以在 Word 2010 中复制形状而无需借助 Select 根据开发中心 http msdn microsoft com en us library office ff835500 aspx the Anchor属性返回形状的锚定范
  • Excel VBA 选择.替换,如果替换,则将文本放在替换行的 a 列中

    我有一些宏 例如 Columns F M Select Selection Replace What Replacement LookAt xlPart SearchOrder xlByRows MatchCase True SearchF
  • 按日期计算 Outlook 中的电子邮件

    我有以下代码来计算 Outlook 文件夹中的电子邮件数量 Sub HowManyEmails Dim objOutlook As Object objnSpace As Object objFolder As Object Dim Ema

随机推荐

  • 从 Git 存储库安装 Python 包后,某些文件夹丢失

    我想从以下存储库安装软件包https github com geomin django countria https github com geomin django countria 我正在使用的命令是pip install git gi
  • Xcode 存档调试条错误

    我正在尝试将大型遗留 C 库与 iOS 应用程序集成 我们能够在设备上构建并运行 但无法存档该应用程序 归档失败并出现以下错误 命令 Applications Xcode app Contents Developer Toolchains
  • 关闭依赖项的默认功能

    我有一个依赖链 最终依赖于可选地在已弃用的库上 具体来说 我想使用间接依赖于 rustc serialize 的 nalgebra 如下所示 nalgebra gt alga gt num complex gt 可选默认值 rustc se
  • 与多处理错误的另一个混淆是,“模块”对象没有属性“f”

    我知道之前已经回答过这个问题 但似乎直接执行脚本 python filename py 不起作用 我在 SuSE Linux 上安装了 Python 2 6 2 Code usr bin python coding utf 8 from m
  • Spark 作业在 YARN 模式下失败

    我有一个用 Scala 编写的 Spark 程序 它从 HDFS 读取 CSV 文件 计算新列并将其保存为 parquet 文件 我正在 YARN 集群中运行该程序 但每次我尝试启动它时 执行程序都会在某个时候失败并出现此错误 您能帮我找出
  • 如何验证nginx是否正在运行?

    After 运行 ASP NET vNext 项目 http xameeramir github io asp net 5 ubuntu linux 在我的本地机器上我试图弄清楚如何运行它nginx https www nginx com
  • 绑定 elementname 究竟是如何工作的?

    我记得几周前读过 它有时在模板内不起作用 我最近尝试在两个不同的窗口中绑定东西 但它找不到名称声明 所以我假设它是本地的命名空间类 只需通过设置 datacontext 来绑定 然而 我真的很好奇什么时候能够使用绑定元素名 什么时候不能使用
  • __cxa_pure_virtual 的目的是什么?

    在使用 avr gcc 编译时 我遇到了如下链接器错误 undefined reference to cxa pure virtual 我发现了其中指出 The cxa pure virtualfunction 是一个错误处理程序 在调用纯
  • 搜索所有网络上的设备

    我想实现一个代码 通过它我可以列出网络上连接的 upnp 兼容媒体渲染器设备 我用谷歌搜索了这个并找到了以下代码扭曲的网站 https twistedmatrix com documents current core howto udp h
  • 使用 Java 将数据写入 Google Sheets

    我需要将收到的所有反馈放入 Google 表格中 我正在关注这个article https www baeldung com google sheets java client这样做 但问题是 如果我按照这篇文章进行操作 每次需要将某些内容
  • SharedPreferences.edit() 没有相应的 commit() 或 apply() 调用

    我正在将 SharedPreferences 用于我的应用程序的介绍滑块 但是 我在这一行收到错误 class PrefManager private SharedPreferences pref private SharedPrefere
  • Jquery fadeIn 导致滚动顶部,我该如何解决?

    我对 jQuery fadeIn 或 fadeOut 方法有疑问 我建立了一个文章旋转器 一切正常 但是当页面滚动到底部并且文章旋转时出现问题 fadeIn 或fadeOut 方法导致滚动到文章位置 我认为这些方法改变了body的css t
  • 如何在后台线程中创建和使用WebBrowser?

    如何在后台 STA 线程中创建 System Windows Forms WebBrowser 我尝试使用这样的代码 var tr new Thread wbThread tr SetApartmentState ApartmentStat
  • 在控制台上用Java打印金字塔

    我怎样才能像这样在Java中打印金字塔 1 23 456 78910 我当前的代码如下所示 public class T public static void main String args int i j num 1 int n Int
  • 使用spring构建Web项目时如何修复MojoFailureException

    最近我使用spring STS和roo 1 2 0 M1来构建一个web项目 我设置了 jpa 并创建了一个具有某些字段的实体 并为该实体创建了一个存储库和一个服务层 然后当我执行测试时 它给出了以下错误 roo gt perform te
  • MongoDB 查询速度过慢,即使查询很简单并且与索引对齐

    我正在运行一个 MongoDB 服务器 这实际上就是它运行的全部内容 该服务器拥有 64GB RAM 和 16 个内核 以及 2TB 硬盘空间 文档结构 数据库有一个集合domains拥有大约 2000 万份文档 每个文档中都有相当多的数据
  • SQL JOIN 查询编写

    我正在尝试编写一个涉及两个表的简单查询 人 表有其独特之处person id and a name 朋友 表有一个person id and a friend id这是一个 FK 到person id在人员表中 person
  • StringBuilder 真的比连接十几个字符串慢吗?

    StringBuilder 真的比连接十几个字符串慢吗 编译器如何优化字符串连接 使得使用 连接十几个字符串会比StringBuilder更好 从一本 本 沃森写的 书中说 字符串连接 用于简单连接已知的 在编译时 time 字符串数量 只
  • 在AngularJS控制器中转换日期格式

    我编写以下代码来打印当前日期时间 scope date new Date 然后我使用 console log 打印相同的内容 console log scope date 它工作正常 2017 年 1 月 24 日星期二 16 36 06
  • 带点运算符的常数 (VBA)

    我想要一个常量材料的目录 这样我就可以使用如下所示的代码 Dim MyDensity MySymbol MyDensity ALUMINUM Density MySymbol ALUMINUM Symbol 显然 铝的密度和符号预计不会改变