Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用StrConv后VBA中的字符串连接_String_Vba_Unicode_String Concatenation - Fatal编程技术网

String 使用StrConv后VBA中的字符串连接

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)在第一个字符串中放置了一个额外的东西。这就是不允许看到第二部分的原因 使用 经过一些研究,它将在每个实际字符后放置一个空字符 因此,如果您希望一次使用多个字

我不能连接两个字符串。第一个字符串是StrConv()的结果,第二个字符串只是一个简单的字符串,如
“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