使用 Mid 字符串的 VBA 代码小写到大写

K. *_* L. 3 vba lowercase uppercase

我被这个 VBA 代码困住了。任何帮助将不胜感激。我正在尝试将 2 个单词的第一个字母从小写更改为大写。另外,我应该如何在代码中考虑这两个词之间的空格?

我一直无法执行代码,因为我不断收到此编译错误:“参数不是可选的”。

Function Properword(Text)
Dim rText
rText = Len(rText)
If rText(Mid(1, 1)) = LCase(Str) Then
    rText = UCase(Str)
    If rText(Mid(6, 1)) = LCase(Str) Then
    rText = UCase
End If
Run Code Online (Sandbox Code Playgroud)

结束函数

干杯!

Pan*_*aju 5

首先,您不必使用UDF。只需使用内置WorksheetFunction.Proper函数即可实现ProperCase。

如果你仍然想创建 UDF,一个例子是

Function Properword(strTxt)
    Dim arrTxt

    arrTxt = Split(strTxt, " ")
    For i = LBound(arrTxt) To UBound(arrTxt)
        arrTxt(i) = UCase(Left(arrTxt(i), 1)) & Mid(arrTxt(i), 2)
    Next

    Properword = Join(arrTxt, " ")
End Function
Run Code Online (Sandbox Code Playgroud)

最后,您的代码问题

rText = Len(rText)~~ 这意味着 rText 将包含一个数值,因为Len返回字符串的长度

If rText(Mid(1, 1)) = LCase(Str) Then~~Mid将字符串作为第一个参数,然后是起点,然后是终点(可选)。

不确定您在以下几行中尝试执行的操作。

rText = UCase(Str)
If rText(Mid(6, 1)) = LCase(Str) Then
rText = UCase
Run Code Online (Sandbox Code Playgroud)