【问题标题】:VBA - Is there a way to get a Constant value from a variable String?VBA - 有没有办法从变量字符串中获取常量值?
【发布时间】:2015-07-15 15:19:09
【问题描述】:

我创建了 几个常量(用关键字 Const 声明的 VBA 标识符)看起来像 Rg_EuroRg_UsdRg_Cad,... 来定义特定区域到我的工作簿。

因为我正在使用的数据库中有这些“扩展”EuroUsdCad、...) , 我试图通过创建一个字符串来获取常量的值,如下所示:Str = "Rg_" & extension(i)

但我似乎无法找到一种解决方法来调用常量并从中获取它的值......我用谷歌搜索它但没有找到我想要的东西,我我开始认为这可能无法直接...

我想到了一个用户定义函数,在字符串上带有 Select Case 以返回正确的值,但它只是要添加另一个函数所以我正在寻找如果有一个更直接的解决方案!

【问题讨论】:

  • 常量是什么意思?你的意思是用关键字Const 声明的VBA 标识符吗?如果是这样——我看不出你怎么能比使用选择案例或字典做得更好。将它包装在一个函数中是良好编程而不是糟糕编程的标志。如果常量是指工作簿名称集合中的条目(命名范围或命名值),那么很容易从字符串变量中访问它们。
  • @JohnColeman :我将立即进行编辑以避免误解,但实际上我的意思是在 VBA 中声明的 Const 变量,我知道其他变量可以通过 ListObject... 访问。对于函数,我知道这仍然是一个很好的解决方案,但我想知道是否有更直接的方法可以做到这一点,即使它显然没有。
  • 他们不是名字有什么原因吗?无论如何——与其编写一个从字符串返回值的函数,也许您可​​以编写一个在 workbook_open() 上运行一次并创建或更新用作这些别名的名称的函数。命名范围在 VBA 中比 const 标记范围更自然(为您似乎在做的事情提供一个术语)。
  • 不,确实,我开始使用的 VBA Consts 似乎是一个更好的主意!谢谢输入,我没有这样想过,但我很可能会将其更改为命名范围!我仍然会先打开这个问题,看看是否有人对此主题有有趣的意见
  • VBA 具有自动垃圾回收功能。这应该不是问题。

标签: vba excel ms-word powerpoint


【解决方案1】:

我不是专业人士,我的回答只是我为解决类似问题所做的,无论如何,我希望它有所帮助:

您可以添加命名为常量的控件(例如文本框)并设置您需要的值,然后您就可以使用此捕获任何值:

Me.Controls("RG_" & extension(i)).text

【讨论】:

  • 我没想到!这是一个有趣的工作,但我想我会更喜欢我的 Select Case 函数,但无论如何,谢谢你的输入! ;)
猜你喜欢
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
相关资源
最近更新 更多