【发布时间】:2019-04-24 22:00:29
【问题描述】:
我正在使用 Excel 中的数学特殊字符。
(指数⁴、GRΣΣK 和其他其他 Unicode 字符。)
我想将常用的 Unicode 字符串存储为全局常量,因为这可能比每次需要时都调用 CStr() 快得多(而且不易出错)。
例如,我在所有函数之外都有这些声明:
Public Const STRPOWER0 As String = CStr(ChrW(&H2070)) '0th power
Public Const STRPOWER1 As String = "¹" 'CStr(ChrW(&HB9)) 1st power
Public Const STRPOWER2 As String = "²" 'CStr(ChrW(&HB2)) 2nd power
Public Const STRPOWER3 As String = "³" 'CStr(ChrW(&HB3)) 3rd power
Public Const STRPOWER4 As String = CStr(ChrW(&H2074)) '4th power
Public Const STRPOWER5 As String = CStr(ChrW(&H2075)) '5th power
Public Const STRPOWER6 As String = CStr(ChrW(&H2076)) '6th power
Public Const STRPOWER7 As String = CStr(ChrW(&H2077)) '7th power
Public Const STRPOWER8 As String = CStr(ChrW(&H2078)) '8th power
Public Const STRPOWER9 As String = CStr(ChrW(&H2079)) '9th power
Public Const STRPOWERNEGATIVE As String = CStr(ChrW(&H207B)) 'Superscript negative sign
问题是,每当我尝试引用其中一个字符串时,其值为Empty
(如果我打开Option Explicit 我会收到Variable not defined 的错误)
我做错了什么?
VBA 不支持将全局常量作为字符串吗?
【问题讨论】:
-
您的全局常量是否位于普通模块(不是代码、用户窗体、工作表或工作簿模块)中?您是否在使用
Option Private Module然后尝试在不同的模块中使用这些常量?这些是否位于模块最顶部的声明区域中,就在Option Explicit下方? -
在上面的基础上,我感觉你没有放在模块的声明区域,因为你不能使用函数将值设置为常量。
CStr()和ChrW()都是函数。 -
@K.Dᴀᴠɪs
... located in a normal module?是的。... using Option Private Module?我不知道那是什么。我还没有使用我所知道的,但如果需要的话我可以吗?... attempting to use these constants in a different module不,只是在同一个模块中使用它们。... located at the very top不,还有一些其他类型声明和其他一些函数。... can't use a function to set a value to a constant.哦,是的,这可能是一个危险信号。我想这意味着我必须让它们成为“变量”,并且小心不要覆盖它们? -
因为它们被声明为
Const,所以你不能覆盖它们
标签: excel vba global-variables excel-2019