使用Mid string

时间:2017-02-25 23:15:04

标签: vba uppercase lowercase

我已经遇到了这个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

结束功能

干杯!

2 个答案:

答案 0 :(得分:4)

首先,您不必使用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 :(得分:0)

除了Excel函数PROPER

之外
str = WorksheetFunction.Proper("UPPER lower")   ' "Upper Lower"

还有VBA.StrConv功能:

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

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

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