プロが教えるわが家の防犯対策術!

質問させて頂きます。
エクセルのシート上のセルの、文字列(例えば『あいうえお』)と背景色(黄色)を満たす条件のセルを検索し、それの文字列のみを置き換えしたいです。
vbaをマクロに登録して使いたいのですが、可能でしょうか?頻繁にある作業で困ってます。よろしくお願いします。

A 回答 (3件)

こんにちは!



>背景色(黄色)
とは条件付き書式が設定してあるのでしょうか?
それとも手動で色付けされているのでしょうか?

条件付き書式が設定してあるのであれば、「and」条件でその条件をプラスすれば良いと思いますが、
とりあえずどちらにも対応できる方法です。

「あいうえお」を「かきくけこ」にしてみました。

Sub Sample1()
 Dim c As Range
  For Each c In ActiveSheet.UsedRange
   If c = "あいうえお" And c.DisplayFormat.Interior.ColorIndex = 6 Then
    c = "かきくけこ"
   End If
  Next c
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

実際にキチンと置換出来ました!ありがとうございます!
一番シンプルで他にも応用したいのでベストアンサーに選ばせて頂きました。

お礼日時:2019/07/05 20:56

マクロつかわなくても、置換で書式も指定できます。



また、マクロの記録でもできますので簡単かと。

ただし、記録時に色(書式)が既に設定されていたら
そこまで記録してくれません。

マクロの実行範囲は選択したセル範囲となります。

尚、黄色は65536となっていますが、vbYellowでもOK

Sub test()

With Application.FindFormat.Interior
.PatternColorIndex = xlAutomatic
.Color = 65536
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Replace What:="あいうえお", Replacement:="かきくけこ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
ReplaceFormat:=False

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます^_^

お礼日時:2019/07/05 20:58

呼び出す毎に1つ置き換えるバージョンです。



Sub test()
Dim Found As Range
Dim FirstAddress As String
With ActiveSheet.UsedRange
Set Found = .Find("あいうえお", LookIn:=xlValues)
If Not Found Is Nothing Then
Do
If Found.DisplayFormat.Interior.Color = vbYellow Then
Found.Activate
Found.Value = "かきくけこ"
Exit Do
ElseIf Len(FirstAddress) = 0 Then
FirstAddress = Found.Address
End If
Set Found = .FindNext(Found)
Loop Until FirstAddress = Found.Address
End If
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2019/07/05 20:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!