Vba strConv将括号视为第一个字母

Vba strConv将括号视为第一个字母,vba,excel,Vba,Excel,下面代码中的strConv返回 (你好,世界) 而不是想要的 (你好,世界) 因为它将第一个括号视为单词“HELLO”的第一个字母。 有谁能建议如何克服这个问题吗 Dim MyString Dim MyCaseString MyString = "(HELLO WORLD)" MyCaseString = strConv(MyString, 3) MsgBox MyCaseString 使用Mid()切掉前导“(”--它可以添加回: Sub

下面代码中的strConv返回 (你好,世界) 而不是想要的 (你好,世界) 因为它将第一个括号视为单词“HELLO”的第一个字母。 有谁能建议如何克服这个问题吗

 Dim MyString
    Dim MyCaseString
        MyString = "(HELLO WORLD)"
        MyCaseString = strConv(MyString, 3)
    MsgBox MyCaseString 
使用Mid()切掉前导“(”--它可以添加回:

Sub test()
    Dim MyString
    Dim MyCaseString
    MyString = "(HELLO WORLD)"
    MyCaseString = "(" & StrConv(Mid(MyString, 2), 3)
    MsgBox MyCaseString
End Sub

我个人会使用正则表达式(您需要对Microsoft VBScript正则表达式5.5的引用):


例如John Coleman,使用
Replace
函数可以做同样的事情

  • 方法1-->这将替换左括号
  • 方法2-->这将替换左/右括号
  • 方法1:

    Sub Test1()
    
        Dim MyString
        Dim MyCaseString
    
        MyString = "(HELLO WORLD)"
        MyCaseString = "(" & StrConv(Replace(MyString, "(", ""), 3)
    
        MsgBox MyCaseString
    End Sub
    
    方法2:

    Sub Test2()
    
        Dim MyString
        Dim MyCaseString
    
        MyString = "(HELLO WORLD)"
    
        mystr = Replace(Replace(MyString, "(", ""), ")", "")
        MyCaseString = "(" & StrConv(mystr, vbProperCase) & ")"
    
        MsgBox MyCaseString
    End Sub
    

    非常感谢约翰·科尔曼。非常好。我感谢你。谢谢共产国际。那看起来确实很有趣。我明天会努力从中学习。非常感谢你。
    Sub Test2()
    
        Dim MyString
        Dim MyCaseString
    
        MyString = "(HELLO WORLD)"
    
        mystr = Replace(Replace(MyString, "(", ""), ")", "")
        MyCaseString = "(" & StrConv(mystr, vbProperCase) & ")"
    
        MsgBox MyCaseString
    End Sub