VBA代码:使用Mid字符串将小写转换为大写

3

我卡在这个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

结束函数

干杯!


1
展示一个你想要实现的例子。 - user3598756
3
已回滚。记得在感谢他人时不要删除问题,这会使答案难以理解。 :) 只需选中您认为已回答问题的答案即可。 - Darren Bartrup-Cook
2个回答

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

最后,关于您的代码存在的问题

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

1
除了Excel函数PROPER之外
str = WorksheetFunction.Proper("UPPER lower")   ' "Upper Lower"

还有一个VBA.StrConv函数:

str = StrConv("UPPER lower", vbProperCase)      ' "Upper Lower"

要仅将字符串的部分转换为大写,可以使用RegExMid语句

Mid(str, 1, 1) = UCase(Mid(str, 1, 1))          ' makes the first letter uppercase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接