質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

1回答

956閲覧

excelのVBAでブック全体の数式をセルの値を参照して、一括置換えをしたいのですが、調べてもわかりません。

deepcity

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2023/05/03 09:55

実現したいこと

excelのVBAでブック全体の数式をセルの値を参照して、一括置換えをしたいのですが、調べてもわかりません。
よろしかったら教えていただけると助かります。

前提

例 シート1   A1セル  [2023.03月 伝票.xlsm]  A2セル  [2023.04月 伝票.xlsm]
ブック全体の参照月をシート1のA1からA2に置換える

ThisWorkbook.WorkSheets("シート1").Cells.Replace What:="置換したい文字列", Replacement:="置換後の文字列"
上記みたいに置換える文字列が確定しているならいいのですが、変わるため毎回打ち込むと間違いが起こる可能性が高いです。
また、置換えも同様に間違えが起こる可能性があるので。
ブック全体を置換えると、A1セルも置き換わってしまうことになりますが、書式の色で区別しているので、そこはクリアできていると思います。

発生している問題・エラーメッセージ

下記の構文だと、指定したシートのみの置換えになってしまう。

該当のソースコード

’置換えるべき数式のセルの書式設定
With Application.FindFormat.Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.599963377788629
.PatternTintAndShade = 0
End With
With Application.ReplaceFormat.Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.599963377788629
.PatternTintAndShade = 0
End With
’ブック全体にシート1のA1セルの値をA2に置換え
ThisWorkbook.Worksheets("シート1").Cells.Replace What:=Range("A1").Value, Replacement:= _
Range("A2").Value, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
False, SearchFormat:=True, ReplaceFormat:=True, FormulaVersion:= _
xlReplaceFormula2

試したこと

駆け出しで、マクロの記録をしてみたり、あれこれと調べましたが、セルの値を使っている例がなかったのでよろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

logres_Fan

2023/05/03 10:53

スクショ出来ますか?
meg_

2023/05/03 11:01

読みやすいようにコードにインデントを付けていただけませんか?
guest

回答1

0

ベストアンサー

Sub ReplaceAllSheets() Dim sourceValue As String Dim targetValue As String sourceValue = ThisWorkbook.Worksheets("シート1").Range("A1").Value targetValue = ThisWorkbook.Worksheets("シート1").Range("A2").Value ’置換えるべき数式のセルの書式設定 With Application.FindFormat.Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.599963377788629 .PatternTintAndShade = 0 End With With Application.ReplaceFormat.Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.599963377788629 .PatternTintAndShade = 0 End With Cells.Replace What:=sourceValue, Replacement:=targetValue, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False, _ FormulaVersion:=xlReplaceFormula2 End Sub

投稿2023/05/03 11:26

編集2023/05/03 11:27
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

deepcity

2023/05/04 01:11

Sub ReplaceAllSheets()   Dim Ws As Worksheet Dim sourceValue As String Dim targetValue As String sourceValue = ThisWorkbook.Worksheets("マクロ作成用シート").Range("G40").Value targetValue = ThisWorkbook.Worksheets("マクロ作成用シート").Range("G42").Value '置換えるべき数式のセルの書式設定 下記'の行with~withの書式検索と書式置換えががうまくいきませんでした ' With Application.FindFormat.Interior ' .PatternColorIndex = xlAutomatic ' .ThemeColor = xlThemeColorAccent6 ' .TintAndShade = 0.599963377788629 ' .PatternTintAndShade = 0 ' End With 置換えを難しくない方法で回避 Application.ReplaceFormat.Interior.Color = XlRgbColor.rgbAliceBlue ' With Application.ReplaceFormat.Interior ' .PatternColorIndex = xlAutomatic ' .ThemeColor = xlThemeColorAccent6 ' .TintAndShade = 0.599963377788629 ' .PatternTintAndShade = 0 ' End With For Each Ws In Worksheets Ws.Activate Cells.Replace What:=sourceValue, Replacement:=targetValue, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True Next Ws '変更(置換)の設定を初期化 Application.ReplaceFormat.Clear End Sub 参考にさせていただきなんとか解決できました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問