« ◆Excel VBA(文字列内の検索文字の出現数を取得する関数) | トップページ | ■Word VBA(Word2010:StartUPフォルダのショートカットファイルが削除されてしまう不具合?) »

2010年11月10日 (水)

◆Excel VBA(複数の条件で文字列を一括置換する関数)

VBAのReplace関数は一つの条件しか設定できませんので、複数の条件で置換するための
関数を作成してみました。

'呼び出しテスト
Sub testReplaceEx()
    lmoto = Array("(月)", "(火)", "(水)", "(木)", "(金)", "(土)", "(日)", "月")
    lsaki = Array("", "", "", "", "", "", "", "/")
   
    MsgBox ReplaceEx("9月12(金)~9月13(土)", lmoto, lsaki, True, True)
End Sub
Msgbox2
'################################################################################
'# <機能名>      文字列一括置換
'# <機能概要>   VBAのReplace関数を拡張し、複数の条件で一括置換する
'# <引数>         pVal:置換対象文字列
'#           pMoto:変換元文字列配列
'#           pSaki:変換先文字列配列
'#           pZenHan:全角・半角あり(空白以外)/なし(空白)
'#           pOmojiKomoji:大文字・小文字あり(空白以外)/なし(空白)
'# <返却値>      置換結果文字列(String)
'################################################################################
Public Function ReplaceEx(pVal, pMoto, pSaki, pZenHan, pOmojiKomoji) As String
    If UBound(pMoto) <> UBound(pSaki) Then ReplaceEx = lVal: Exit Function
   
    For i = 0 To UBound(pMoto)
        If pZenHan = "" Then
            pVal = StrConv(pVal, vbNarrow)
            pMoto(i) = StrConv(pMoto(i), vbNarrow)
        End If
        If pOmojiKomoji = "" Then
            pVal = StrConv(pVal, vbLowerCase)
            pMoto(i) = StrConv(pMoto(i), vbLowerCase)
        End If
        pVal = Replace(pVal, pMoto(i), pSaki(i))
    Next
    ReplaceEx = pVal
End Function

« ◆Excel VBA(文字列内の検索文字の出現数を取得する関数) | トップページ | ■Word VBA(Word2010:StartUPフォルダのショートカットファイルが削除されてしまう不具合?) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ◆Excel VBA(文字列内の検索文字の出現数を取得する関数) | トップページ | ■Word VBA(Word2010:StartUPフォルダのショートカットファイルが削除されてしまう不具合?) »