「突合用シート」にて、
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スペースで区切られた氏名から...
-
Excel・ユーザーフォームの情報...
-
特定の列のみ置換を行いたい
-
各項目がダブルクォーテーショ...
-
Replace関数 大文字小文字を区...
-
word オートシェイプ内も一括変換
-
秀丸エディタで、「-」や「ー」...
-
VBA(Excel)でファイル内の文字...
-
秀丸 置換について
-
秀丸で、ダブルクォーテーショ...
-
[VBScript]バイト長の判定
-
半角・全角の由来
-
エクセルにMicrosoft Barcode C...
-
Excelの中に全角ひらがな、漢字...
-
数字を文字列に変換し短縮化する
-
住宅にカナを入力する際に丁目...
-
VBA EXCEL あるセルの中の一...
-
文字列を quoted-printable 文...
-
UWSC教えて
-
VBAでシングルクオート(8217)を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
各項目がダブルクォーテーショ...
-
正規表現で、特定の文字列を含...
-
csvデータ ダブルクォーテ...
-
スペースで区切られた氏名から...
-
正規表現 特定の文字列を含む行...
-
○文字目に文字挿入
-
C#で空白行を削除する方法
-
EXCEL警告「置換対象のデータが...
-
Excel・ユーザーフォームの情報...
-
ハングルを日本語に置換
-
秀丸エディタで、「-」や「ー」...
-
EXCEL VBA でCTRL+Fのダイア...
-
xmlファイル内の文字列置換
-
csvデータのダブルクォーテーシ...
-
C言語でテキストファイルの内容...
-
テキストボックスの文字列を置...
-
Eclipse 改行後のタブ
-
特定の列のみ置換を行いたい
-
パワーポイントの一括置換:複...
おすすめ情報