- ベストアンサー
Excel VBAマクロの改造方法を教えてください
- Excel VBAのマクロを改造し、一度に複数の値を置換できる方法を教えてください。
- 現在のマクロでは一度に一つの値しか置換できませんが、一度に複数の値を置換できるようにする方法を教えてください。
- マクロを改良し、一度に複数の値を置換できるようにしたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
右端がスペースの時置換を行うというのでいいでしょうか。 https://okwave.jp/qa/q9836487.html の時同様、C2~C11 に検索文字、D2~D11 に痴漢文字を置いて実行して下さい。 Option Explicit ' Sub Macro1() Dim Row As Long Dim Expression As String ' For Row = [A1].End(xlDown).Row To Cells(Rows.Count, "A").End(xlUp).Row Expression = Cells(Row, "A") ' If Expression Like " *" Then Cells(Row, "A") = MaltiReplace(Expression, [C2:D11]) End If Next Row End Sub ' Function MaltiReplace(Expression As String, FindArea As Range) Dim Row As Integer Dim FindStr As String Dim ReplStr As String ' MaltiReplace = Expression ' For Row = 1 To FindArea.Rows.Count FindStr = FindArea(Row, 1) ReplStr = FindArea(Row, 2) MaltiReplace = Replace(MaltiReplace, FindStr, ReplStr) Next Row End Function Option Explicit ' Sub Macro1() Dim Row As Long Dim Expression As String ' For Row = [A1].End(xlDown).Row To Cells(Rows.Count, "A").End(xlUp).Row Expression = Cells(Row, "A") ' If Expression Like " *" Then Cells(Row, "A") = MaltiReplace(Expression, [C2:D11]) End If Next Row End Sub ' Function MaltiReplace(Expression As String, FindArea As Range) Dim Row As Integer Dim FindStr As String Dim ReplStr As String ' MaltiReplace = Expression ' For Row = 1 To FindArea.Rows.Count FindStr = FindArea(Row, 1) ReplStr = FindArea(Row, 2) MaltiReplace = Replace(MaltiReplace, FindStr, ReplStr) Next Row End Function
補足
置換するのは一番左の値です 間違えました 失礼しました