「突合用シート」にて、
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現で、特定の文字列を含...
-
PerlでUTF-8のファイルの文字列...
-
ダブルコーテーション 、"を二...
-
テキストファイル中の文字列の置換
-
Eclipse 改行後のタブ
-
○文字目に文字挿入
-
VBA 置換文字がみつからない時
-
HTMLで表示させる記述を教えて...
-
各項目がダブルクォーテーショ...
-
csvデータ ダブルクォーテ...
-
正規表現でタグとその内容を検...
-
csvデータのダブルクォーテーシ...
-
EXCELマクロを用いてグラフの系...
-
vbs 連続した8タブを空白に変換...
-
VBscriptで「改行」と「"」を置...
-
EXCEL警告「置換対象のデータが...
-
テキストボックスの文字列を置...
-
ドリーム機能について
-
C言語でテキストファイルの内容...
-
\\(円)記号を置換したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
csvデータ ダブルクォーテ...
-
各項目がダブルクォーテーショ...
-
正規表現で、特定の文字列を含...
-
スペースで区切られた氏名から...
-
EXCEL警告「置換対象のデータが...
-
正規表現 特定の文字列を含む行...
-
C#で空白行を削除する方法
-
Eclipse 改行後のタブ
-
csvデータのダブルクォーテーシ...
-
EXCELマクロを用いてグラフの系...
-
テキストファイル中の文字列の置換
-
テキストボックスの文字列を置...
-
秀丸で数字だけの行を削除したい
-
○文字目に文字挿入
-
Excel・ユーザーフォームの情報...
-
xmlファイル内の文字列置換
-
Excel VBA リストに一致したデ...
-
C言語でテキストファイルの内容...
-
フォントの色を保持したままセ...
おすすめ情報