ゆっくり開発

思いついた便利コードを気ままにアップしていきます。公開しているソースコードはすべてMITライセンスです。

【VBA】文字列分割 ユーザー定義関数

'文字列分割
Function SplitString( _
                      ByRef 対象文字列 As String _
                    , ByRef 区切り文字列 As String _
                    , Optional ByRef 取得位置 As Integer = 1 _
                    ) As Variant
    
    Dim var As Variant
    var = Split(対象文字列, 区切り文字列)
    SplitString = var(IIf(取得位置 < 0, UBound(var) + 1 + 取得位置, 取得位置 - 1))

End Function
'ユーザー定義関数の説明登録
'ブックのオープンイベントなどで呼び出す
Sub AddUDFToCustomCategory()
    
    'オプションの設定方法は下記参照
    '   https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.macrooptions
    
    Application.MacroOptions _
          Macro:="SplitString" _
        , Description:="「対象文字列」を「区切り文字列」で分割します。" _
        , Category:=7 _
        , ArgumentDescriptions:=Array( _
                                      "分割したい文字列を指定します" _
                                    , "分割する文字列を指定します" _
                                    , "取得したい文字列の位置を整数で指定します" _
                                    & vbCrLf & "1以上:左からの順番" _
                                    & vbCrLf & "-1以下:右からの順番" _
                                )
End Sub