VBAのString.ToUpper()
メソッドを使用して、作成したユーザー定義関数がすべて大文字で値を返すようにしようとしています。 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は機能しますが、入力された文字列をすべてのアッパーに返すことはありません。
ちょうど間違った機能。あなたが欲しい
sInput = UCase(sInput)
それが役立つことを願っています
関数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