サイトについて      連絡先   検索

VBA StrReverse 関数

はじめに

Excel VBA マクロの StrReverse 関数を紹介します。

StrReverse 関数は、指定した文字列の並びを逆にした文字列を返します。

文字列を反転したいときに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

StrReverse(文字列)
文字列の並びを反転します。

引数「文字列」文字列を指定します。
戻り値の型文字列型 (String)

解説

引数「文字列」がabcならcbaを返します。

引数「文字列」が空文字""なら空文字を返します。

文字列の先頭から何かする処理を、後ろから処理したいときに使用できます。

Unicode のサロゲートペア文字は 2 文字として扱います。その並びを維持したまま反転するには、関数を作成します。

使用例


Dim s As String

s = StrReverse("あいう")
Debug.Print(s) ' ういあ

s = StrReverse("abc")
Debug.Print(s) ' cba

s = StrReverse("-1,234")
Debug.Print(s) ' 432,1-

s = StrReverse("")
Debug.Print(s) ' ""

文字列を後ろから取得する。


Dim 反転 As String
反転 = StrReverse("123456789")

Dim s As String

Dim i As Integer
For i = 1 To Len(反転)
    s = Mid(反転, i, 1)
    Debug.Print(s) ' 9 8 7 6 5 4 3 2 1
Next

サロゲートペア文字を維持したまま反転する。StrReverseSurrogate 関数を作成して取得しています。

反転したサロゲートペア文字を判定する IsReverseSurrogate 関数を使用しています。詳しくは「Unicode 文字の入力や読み込み」をご覧ください。

Sub 実行()
    Dim s As String
    s = "12" & WorksheetFunction.Unichar(171581) & "56" ' 12𩸽56
    
    Range("A1").Value = StrReverse(s)          ' 65??21
    Range("B1").Value = StrReverseSurrogate(s) ' 65𩸽21
End Sub

' サロゲートペア文字を維持したまま反転します。
Function StrReverseSurrogate(ByVal text As String) As String
    Dim reverse As String
    reverse = StrReverse(text) ' 反転する
    
    Dim s As String ' 抽出した文字
    Dim char As String
    
    ' 文字数を数える
    Dim i As Long
    For i = 1 To Len(reverse)
        
        char = Mid(reverse, i, 1)
        
        If IsReverseSurrogate(Mid(reverse, i)) Then
            ' サロゲートペア文字
            char = Mid(reverse, i + 1, 1) & char
            i = i + 1
        End If
        
        s = s & char
    Next
    
    StrReverseSurrogate = s
End Function
  • 目次
    • 構文
    • 解説
    • 使用例