8 string excel vba unicode-literals
我想声明(在 VBA 类模块中)一些包含日语字符的私有常量字符串。有没有办法构造String
可以在Const
声明中作为初始值设定项接受的文字(或以某种方式组合文字)?即类似:
Private Const MY_CONST = ...
Run Code Online (Sandbox Code Playgroud)
或者
Private Const MY_CONST As String = ...
Run Code Online (Sandbox Code Playgroud)
我使用 MS Excel v14.0.6112.5000 (MS Office Professional Plus 2010)。
什么不起作用:
... = "??"
)中,因为 VBA 编辑器会弄乱字符;ChrW()
或ChrW$()
(例如... = ChrW$(22793) & ChrW$(25968)
),因为在Const
初始化程序中不允许函数调用。什么我不喜欢:
Const
通过创建Private Property Get
返回字符串来伪造,因为每次我访问该属性时都会重新创建该字符串(另外,令人困惑和丑陋......但是,好吧,最后两件事是一个品味问题)。通过创建 Private Property Get 返回字符串来伪造 Const,因为每次访问该属性时都会重新创建该字符串(另外,令人困惑且丑陋......但是,好吧,最后两件事相当个人喜好问题)。
您无需在每次访问该属性时重新创建该字符串。
虽然这仍然很难看,但创建一个只读属性(本质上是Const
,因为它没有Property Let
过程),并在事件中构造字符串Class_Initialize
:
'## CLASS MODULE
Private pUnicodeString As String
Sub Class_Initialize()
pUnicodeString = ChrW(22793) & ChrW(25968)
End Sub
Property Get UnicodeString() As String
UnicodeString = pUnicodeString
End Property
Run Code Online (Sandbox Code Playgroud)
然后像这样调用它:
'## STANDARD MODULE
Sub Test()
Dim c As myClass
Set c = New myClass
[A1].Value = c.UnicodeString
End Sub
Run Code Online (Sandbox Code Playgroud)