使用 StrConv 后 VBA 中的字符串连接
String concatenation in VBA after using StrConv
我无法连接 2 个字符串。第一个字符串是 StrConv()
的结果,第二个只是一个简单的字符串,如 "K"
.
这些不起作用:
MsgBox StrConv("O", vbUnicode) & "K"
MsgBox StrConv("O", vbUnicode) + "K"
MsgBox CStr(StrConv("O", vbUnicode)) & "K"
Dim g(1) As String
g(0) = CStr(StrConv("O", vbUnicode))
g(1) = CStr("K")
MsgBox Join(g(), vbNullString)
预期结果是"OK"
这是StrConv
的简化版本,足以看出连接不起作用。但是,我的真实情况是 StrConv(ChrW$(240), 64, 1063)
在第一个字符串中放置了一个额外的东西。这是不允许看到第二部分的原因
使用
MsgBox left(StrConv("O", vbUnicode),1) & "K"
经过一些研究,它在每个实际字符后放置一个空字符。
因此,如果您一次需要多个字符,请使用此
Msgbox Replace(StrConv("O", vbUnicode),chr(0),"") & "K"
这将一次允许多个字符。
发件人:http://blog.nkadesign.com/2013/vba-unicode-strings-and-the-windows-api/
#If VBA7 Then
Public Declare PtrSafe Function MessageBoxW Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
#Else
Public Declare Function MessageBoxW Lib "user32" _
(ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
#End If
Sub tt()
Dim g(1) As String, r
g(0) = CStr(StrConv("O", vbUnicode))
g(1) = "K"
r = Join(g(), vbNullString)
MessageBoxW 0, r, StrConv("test", vbUnicode), 0
End Sub
我无法连接 2 个字符串。第一个字符串是 StrConv()
的结果,第二个只是一个简单的字符串,如 "K"
.
这些不起作用:
MsgBox StrConv("O", vbUnicode) & "K"
MsgBox StrConv("O", vbUnicode) + "K"
MsgBox CStr(StrConv("O", vbUnicode)) & "K"
Dim g(1) As String
g(0) = CStr(StrConv("O", vbUnicode))
g(1) = CStr("K")
MsgBox Join(g(), vbNullString)
预期结果是"OK"
这是StrConv
的简化版本,足以看出连接不起作用。但是,我的真实情况是 StrConv(ChrW$(240), 64, 1063)
在第一个字符串中放置了一个额外的东西。这是不允许看到第二部分的原因
使用
MsgBox left(StrConv("O", vbUnicode),1) & "K"
经过一些研究,它在每个实际字符后放置一个空字符。
因此,如果您一次需要多个字符,请使用此
Msgbox Replace(StrConv("O", vbUnicode),chr(0),"") & "K"
这将一次允许多个字符。
发件人:http://blog.nkadesign.com/2013/vba-unicode-strings-and-the-windows-api/
#If VBA7 Then
Public Declare PtrSafe Function MessageBoxW Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
#Else
Public Declare Function MessageBoxW Lib "user32" _
(ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
#End If
Sub tt()
Dim g(1) As String, r
g(0) = CStr(StrConv("O", vbUnicode))
g(1) = "K"
r = Join(g(), vbNullString)
MessageBoxW 0, r, StrConv("test", vbUnicode), 0
End Sub