
「突合用シート」にて、
Columns("A:A").Select で、A列にて、
Selection.Replace で、ある文字列を置換しています。置換のパターンが8種類あるので8行繰り返して記述しています。
別のシート「加工用シート」でも同じ置換作業を行う必要が出てきました。
こちらではD列にて行う必要があります。(置換ルールは同じ)
すると、「突合用シート」で8種類の置換が終わった後、
「加工用シート」に移動して Columns("D:D").Select で、
同じ条件を記述しなおして置換しなければいけないのでしょうか?
これだと条件が修正になった時、2か所修正する必要があります。
また、置換文は、以下の書き方ですが、もっと上手な書き方はありますか?
「置換前」の文字列を「置換後」に置き換えたいだけです。
Selection.Replace What:="置換前", Replacement:="置換後", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
詳しい方、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは
>これだと条件が修正になった時、2か所修正する必要があります。
難しい問題です、、、
同じ条件の修正が約束されていればそのようになりますが、個々の修正が必要な場合、纏めてあると結局、増やす必要があるのではないかと、、
Replaceは主に加工に使用されると思いますのでいらぬ心配かも知れませんね
書き方は色々ありそうですが、少し纏める事が出来そうです。
処理速度を考えていませんが、、例として
Sub Sample()
Dim 突合用シート As Worksheet, 加工用シート As Worksheet
Dim 加工用シート As Worksheet
Dim trgRange As Range
Set 突合用シート = Worksheets("突合用シート")
Set 加工用シート = Worksheet("加工用シート")
Set trgRange = 突合用シート.Range("A2", 突合用シート.Cells(Rows.Count, "A").End(xlUp))
Call MyReplace(trgRange)
Set trgRange = 加工用シート.Range("D2", 加工用シート.Cells(Rows.Count, "D").End(xlUp))
Call MyReplace(trgRange)
End Sub
Sub MyReplace(trgRange As Range)
Dim ReplAry, strWhat, i As Integer
ReplAry = Array("置換後1", "置換後2", "置換後3", "置換後4", "置換後5", "置換後6", "置換後7", "置換後8")
For Each strWhat In Array("置換前1", "置換前2", "置換前3", "置換前4", "置換前5", "置換前6", "置換前7", "置換前8")
trgRange.Replace What:=strWhat, Replacement:=ReplAry(i), LookAt:=xlPart
i = i + 1
Next
End Sub
置換前1と置換後1は対の関係です。
パラメータ(引数)を省略しています。
xlPartもデフォルトですが念のため。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
タイプミス、問題ありません(笑
期待通りの動作確認ができました。
すごく短くすっきりしたソースになり内部的にも満足です。
ありがとうございます。
No.3
- 回答日時:
#2です
タイプミスと重複訂正
Dim 加工用シート As Worksheet 不要
誤り
Set 加工用シート = Worksheet("加工用シート")
訂正
Set 加工用シート = Worksheets("加工用シート")
すみません。
No.1
- 回答日時:
統合用シートで置換を行っているプロシージャをSub1とします。
加工用シートで置換を行っているプロシージャ:Sub2を新たに作成します。
新たにSub0を作成し、そこからSub1,Sub2を呼び出せばOKです。
Public Sub Sub0()
Call Sub1
Call Sub2
End Sub
Public Sub Sub1()
'突合用シート処理
End Sub
Public Sub Sub2()
'加工用シート処理
End Sub
ありがとうございます。
つまり、
Sub1()
Sub2()
両方に置換条件の同じ記述が必要って事ですよね?
置換文字の条件が全く同じなので重複しないやり方はないのかな、
と思ったしだいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Ruby power BI クエリエディター 〇〇を含む文字列置換 1 2022/10/16 17:34
- その他(IT・Webサービス) 少し複雑なテキスト置換がしたいです。 2 2022/10/13 14:42
- Excel(エクセル) Excelの複数置換はSUBSTITUTEを重ねるしかない? 9 2022/05/08 11:25
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドラインスイッチ -pe 's...
-
VBA 置換文字がみつからない時
-
○文字目に文字挿入
-
転置行列への変換が分かりません。
-
csvデータ ダブルクォーテ...
-
perlで置換をするプログラムを...
-
Replace関数 大文字小文字を区...
-
マッチする部分を除いたものが...
-
文字列中に&を含んだパラメー...
-
VBAを使って条件により、文字列...
-
C#で空白行を削除する方法
-
Excel VBA リストに一致したデ...
-
VBscriptで「改行」と「"」を置...
-
配列を対象にして正規表現の置...
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
エクセルで数値を全角文字(カ...
-
IEからEdgeへの移行に伴うIMEの...
-
マッチングアプリで新しくアカ...
-
文字コードの%E3%80%とは何です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
csvデータ ダブルクォーテ...
-
各項目がダブルクォーテーショ...
-
Excel VBA リストに一致したデ...
-
スペースで区切られた氏名から...
-
秀丸エディタで、「-」や「ー」...
-
EXCELマクロを用いてグラフの系...
-
csvデータのダブルクォーテーシ...
-
C#で空白行を削除する方法
-
EXCEL警告「置換対象のデータが...
-
xmlファイル内の文字列置換
-
正規表現 特定の文字列を含む行...
-
テキストボックスの文字列を置...
-
○文字目に文字挿入
-
C言語でテキストファイルの内容...
-
複数のパワーポイントファイル...
-
c# ビルド直前にコードを置換で...
-
Excel・ユーザーフォームの情報...
-
\\(円)記号を置換したい
おすすめ情報