Mar*_*eru 6 excel vba excel-vba excel-2013
Dim myChar As Char
Run Code Online (Sandbox Code Playgroud)
throws编译错误:"未定义用户定义的类型"
我应该包括什么参考使用Char类型?
Char在VBA中不存在类型,您应该使用String.
Dim myChar As String
Run Code Online (Sandbox Code Playgroud)
请注意,VBA与VB.NET不同.在VB.NET中,您可以使用Char.
编辑:根据MichałKrzych的建议,我将使用固定长度的字符串用于此特定目的.
Dim myChar As String * 1
Run Code Online (Sandbox Code Playgroud)
以下是Ken Getz和Mike Gilbert撰写的"VBA开发者手册"的摘录:
"动态字符串需要从VBA获得更多的处理工作量,因此使用起来要慢一些." ..."当一次使用单个字符时,使用声明包含单个字符的固定长度字符串是有意义的.因为你知道字符串中只有一个字符,所以你会永远不需要削减多余的空间.你可以获得固定长度字符串的好处,而无需额外的开销."
有一点需要注意的是,函数和子程序中不允许使用固定的字符串表示法;
不允许使用Sub foo(char as string*1)
...
结束子
所以你要么需要使用;
Sub foo(char as string)'这将允许任何字符串传递
要么
Sub foo(char as byte)'字符串需要转换为工作
使用字节时要注意的一点是,没有标准字节是否是无符号的.VBA使用无符号字节,这在这种情况下很方便.
我认为这取决于你打算如何使用它:
Sub Test()
Dim strA As String, strB As Byte, strC As Integer, strD As Long
strA = "A"
strB = 65
strC = 75
strD = 90
Debug.Print Asc(strA) '65
Debug.Print Chr(strB) 'A
Debug.Print Chr(strC) 'K
Debug.Print Chr(strD) 'Z
End Sub
Run Code Online (Sandbox Code Playgroud)