'マクロで一括置換する方法です。
'たくさんのシートに記入された文字列を複数のシートに渡って一括置換する方法を教えてください。
'置換前と置換後の文字をインプットボックスに記述しブック全体の文字を一括で置換(変更)する
'その後は戻せなくても結構です。
下のように記述しましたが、うまく動作しません
よろしくお願いします。
Private Sub CommandButton11_Click()
Dim BeforeStr As Integer
Dim AfterStr As Integer
Dim WS As Worksheet
Dim N As Integer
For N = 1 To Worksheets.Count
Set WS = Worksheets(N)
For i = 1 To 100
For j = 1 To 200
Before.Cells(i, j).Value = InputBox("置換前の文字列を入力してください。")
After.Cells(i, j).Value = InputBox("置換後の文字列を入力してください。")
For Each WS In Worksheets
WS.Activate
For Each s In WS.Cells
If s.Name Like "InputBox*" Then
s.Select
Selection.Cells(i, j).Value = _
Replace(Selection.Cells(i, j).Value, BeforeStr, AfterStr)
End If
Next j
Next i
Next N
Next
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんばんは。
ご質問のコードは、VBAに似ているけれども、まったくコードとしては成り立っていません。
まず、基本を学んだほうがよいのではありませんか?
一括置換のはずなのに、4万回も入力を求められるのですか?
それから、
s.Select
これは、シートが違えばエラーが発生するはずです。
Selection もシートが違えばエラーが発生します。
なお、以下は、xlPart にしてあります。
複雑な置換を求めるなら、以下では出来ません。
'-----------------------------------------
Private Sub CommandButton11_Click()
Dim sSrc As Variant
Dim sRep As Variant
Dim wh As Worksheet
sSrc = Application.InputBox("検索値を入力してください。", "検索値", Type:=2)
If VarType(sSrc) = vbBoolean Or sSrc = "" Then Exit Sub
sRep = Application.InputBox("置換を入力してください。", "置換値", Type:=2)
If VarType(sRep) = vbBoolean Or sRep = "" Then Exit Sub
For Each wh In ActiveWorkbook.Worksheets
wh.UsedRange.Replace _
What:=sSrc, _
Replacement:=sRep, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False
Next wh
End Sub
No.2
- 回答日時:
1シートずつ捉えて(例For Each s)置換するなら、置換操作のマクロの記録をとって、シート数だけ繰り回せばよいのでは。
そんなことは一言も述べてないが、我流を打ち出して要るが、マクロの記録から学ぶことは卒業したレベルではなかろうと思う。
マクロの記録に少々加えて
Sub Macro1()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Name
sh.Activate
sh.Range("A1:X200").Select
Selection.Replace What:="zzzz", Replacement:="変換", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
End Sub
他にWhat:="zzzz", Replacement:="変換", の"zzz","変換"の部分をInputboxの2つの応答文字列に置き換えればよい。
まずこれがあって、それではカバーできてない点や、不満足な点を
質問すべきではないかと思う。
No.1
- 回答日時:
記述した内容ですが、色々とうまくいかない所が見受けられます。
実際には、もっとシンプルにできるので、下記参考にして下さい。
全部のシートの、A1:GR100のセルを置換対象としています。
Sub sample()
Dim I As Integer
Dim Bef As String
Dim Aft As String
Bef = InputBox("置換前の文字列を入力してください。")
Aft = InputBox("置換後の文字列を入力してください。")
For I = 1 To Worksheets.Count
Worksheets(I).Select
Range(Cells(1, 1), Cells(100, 200)).Select
Selection.Replace Bef, Aft
Range("A1").Select
Next I
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字を一括で置換するソフト・...
-
Excelで、10000,20000,30000と...
-
エクセル 置換中の値の更新
-
エクセルでアルファベット5段階...
-
エクセルで例えば、関数を使っ...
-
カンマ区切り形式ではなく、セ...
-
例えば斎藤->齋藤、渡辺->渡邉...
-
現在47歳です。今年の4月に人工...
-
秀丸で、複数の置換を1ステッ...
-
置換(検索場所に「ブック」を...
-
Wordチェックボックス作り方(...
-
複数PDFファイル内の特定文字列...
-
WORDで一括置換
-
Access2000のパススルークエリ...
-
Wordで複数の単語を一括置換す...
-
文字列の<>で囲まれた文字列...
-
秀丸エディタ タブをカンマに...
-
PDFファイルのグレースケール化
-
スタイルシートの意味が分って...
-
謎の文字列置換(正規表現)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
エクセルでアルファベット5段階...
-
文字を一括で置換するソフト・...
-
Excelで、10000,20000,30000と...
-
txtファイル内の指定の単語の数...
-
Ctrl+Hで置換にならない
-
Wordチェックボックス作り方(...
-
ExcelのROUND関数を一括解除し...
-
エクセル 置換中の値の更新
-
例えば斎藤->齋藤、渡辺->渡邉...
-
エクセルで置換リストを別ブッ...
-
秀丸エディタ タブをカンマに...
-
Wordで一括して改ページする方法
-
パワーポイントの置き換えマクロ
-
WORDで一括置換
-
HTMLタグを一括消去する方法
-
vbaで実行後、指定のセルに戻す...
-
マクロで文字列をブック全体に...
-
文字列の<>で囲まれた文字列...
-
置換(検索場所に「ブック」を...
おすすめ情報