String 使用StrConv后VBA中的字符串连接
我不能连接两个字符串。第一个字符串是StrConv()的结果,第二个字符串只是一个简单的字符串,如String 使用StrConv后VBA中的字符串连接,string,vba,unicode,string-concatenation,String,Vba,Unicode,String Concatenation,我不能连接两个字符串。第一个字符串是StrConv()的结果,第二个字符串只是一个简单的字符串,如“K” 这些方法不起作用: MsgBox StrConv("O", vbUnicode) & "K" 预期结果为“OK” 这是StrConv的简化版本,足以看出串联不起作用。然而,我真正的例子是StrConv(ChrW$(240),641063)在第一个字符串中放置了一个额外的东西。这就是不允许看到第二部分的原因 使用 经过一些研究,它将在每个实际字符后放置一个空字符 因此,如果您希望一次使用多个字
“K”
这些方法不起作用:
MsgBox StrConv("O", vbUnicode) & "K"
预期结果为“OK”
这是StrConv的简化版本,足以看出串联不起作用。然而,我真正的例子是StrConv(ChrW$(240),641063)在第一个字符串中放置了一个额外的东西。这就是不允许看到第二部分的原因 使用 经过一些研究,它将在每个实际字符后放置一个空字符 因此,如果您希望一次使用多个字符,请使用此选项
Msgbox Replace(StrConv("O", vbUnicode),chr(0),"") & "K"
这将允许一次使用多个字符。来自:
我认为Msgbox不支持unicode。尝试调试。打印作为比较…@TimWilliams有理由,但很少使用left函数,可能是因为left函数继承了excel单元格和他的所有功能。我需要一个解释:)。@TimWilliams-我需要
MsgBox
,因为它需要用户的响应。使用相同的StrConv
行,Debug.Print
在两台不同的机器上显示不同的结果,而MsgBox
显示我需要的相同字母。我非常喜欢这种方法!它与“OK”一起工作。但是对于我的真实数据,StrConv(ChrW$(240),641063)返回MsgBox中的ð
,而不是š
。我需要š
我没有其他东西可以提供-这真的不是我所熟悉的领域…这些unicode的东西对我来说也非常复杂。我时常回到他们那里,但我仍然无法在这里建立一些持久的知识。我真的很重视你的意见。还有另外一台机器,我遇到的这类问题最多。因此,如果Left
方法在该机器上无法返回我需要的字母,那么我可能需要返回到您的解决方案并在其上构建一些东西。引用的文章也很好。谢谢不错。我本可以自己考虑,但我并没有:)我知道在一个字母上使用StrConv后,字符串的Len变成了2。谢谢@谢谢,很高兴我能帮忙。我做了更多的研究,发现了实际的问题。请参见编辑。
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)
MsgBox left(StrConv("O", vbUnicode),1) & "K"
Msgbox Replace(StrConv("O", vbUnicode),chr(0),"") & "K"
#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