7

String.ToUpper()VBAのメソッドを使用して、作成したユーザー定義関数がすべて大文字で値を返すようにしようとしています。UDF を Excel で使用しようとすると、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 は機能しますが、入力された文字列をすべてアッパーに返しません。

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 に答える