7

String.ToUpper()我一直在尝试使用VBA中的方法使我编写的用户定义函数以全部大写形式返回它的值。当我尝试在 excel 中使用我的 UDF 时,我收到一个编译器错误,它只突出显示了我的 UDF 的顶行:

Function removeSpecial(sInput As String) As String

这是完整的代码:

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@# (_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "")

    Next
    sInput = sInput.ToUpper()
    removeSpecial = sInput
End Function

该代码可以很好地删除特殊字符,但我希望它也可以将输入的字符串转换为大写。

当我尝试添加时,我开始收到此错误:

sInput = sInput.ToUpper()

如果此代码被注释掉,我的 UDF 可以工作,但不会返回所有 Upper 中输入的字符串。

4

2 回答 2

16

只是错误的功能。你要

sInput = UCase(sInput)

希望有帮助

于 2014-03-09T06:22:56.277 回答
0

确认功能 UCase(...) 正在工作。这是另一个示例“从第 2 行到末尾将第 2 列中的第一个字母大写”:

Sub UpCaseMacro()

' Declare variables
Dim OldValue As String
Dim NewValue As String
Dim FirstLetter As String
Dim i As Long

' Select values
lastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
ActiveSheet.Range(Cells(2, 2), Cells(lastRow, 2)).Select

' Update data
For i = 2 To Selection.Rows.Count
    If Not IsEmpty(Cells(i, 2).Value) Then
        OldValue = Cells(i, 2).Value
        FirstLetter = Left(Cells(i, 2).Value, 1)
        NewValue = UCase(FirstLetter) & Right(OldValue, Len(OldValue) - 1)
        Cells(i, 2).Value = NewValue
    End If
  Next i
 End Sub
于 2016-05-28T14:14:15.593 回答