プロが教える店舗&オフィスのセキュリティ対策術

条件付き書式で塗りつぶされたセルの色を判別して、色別に違う文字を表示することは出来ますか?

文字別に背景色を条件付き書式で変える事の逆をやりたいです。

A 回答 (3件)

こんばんは


>条件付き書式で塗りつぶされたセルの色を判別して、色別に違う文字を表示することは出来ますか?
これについては、すでに的確な回答がありますので割愛します

>文字別に背景色を条件付き書式で変える事の逆をやりたいです。
これは、力業的な事をしないと難しいと思います

背景色が後の様についているかはDisplayFormatで現状見えている色を取得できます、条件付き書式の様に自動化する事が望まれると思いますが、セルの背景色変更をトリガーとするイベントはありません

ボタンやWorksheet_SelectionChangeなど他のイベントから実行する必要がありますので後者の場合、力業的な処理になります。

一例 シートモジュールに
初めのご質問と反する処理ですが条件付き書式で設定された背景色でそのセルの値を変えるのは、なんとなく矛盾を感じますので実行されないようにしてあります

一応、処理する場合を加味してDisplayFormatとしています
If .Interior.Color = .DisplayFormat.Interior.Color Then
1行とEnd Ifを消せば条件付き書式がTRUEの時も値を入れられますが、書式は当然変わる可能性があります

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call DisplayFormat_inValue(Selection)
End Sub

Sub DisplayFormat_inValue(Rng As Range)
Dim rCnt As Long, i As Long
On Error GoTo myEnd
rCnt = Rng.Count
If rCnt > 30 Then Exit Sub '30セルまで処理時間を考慮
For i = 1 To rCnt
With Rng(i)
If .Interior.Color = .DisplayFormat.Interior.Color Then
Application.EnableEvents = False
Select Case .DisplayFormat.Interior.Color
Case RGB(255, 0, 0) '255
.Value = "赤"
Case RGB(255, 255, 0)
.Value = "黄"
Case RGB(0, 0, 255)
.Value = "青"
End Select
Application.EnableEvents = True
End If
End With
Next i
myEnd:
End Sub

色はColorなのでRGBで
背景色の付いているセルを選択すると実行されます
(色が付いた時ではありません。色設定時にする場合、いくつか考えられますが、難しくなりそうです)

!注意
ここまで書いてからですが、上記マクロは問題を発生させる恐れがあります

間違って選択してしまった範囲でも実行されます
(実行したくないセルが含まれていても実行されます。)
マクロで実行された処理は戻せません

対策を
(条件付き書式とは遠くなりますが)
①Private Sub Worksheet_SelectionChange から実行しない
(ボタンや安全なトリガーとなりうる処理から)
②Selectionではなく限定された範囲に絞る
(背景色で値を入れたい範囲のみを明示指定)

①はともかく②は必須?かと

Private Sub CommandButton1_Click()
Call DisplayFormat_inValue(Range("A1:A5,C6,E6"))
End Sub
    • good
    • 2

こんにちは



>条件付き書式で塗りつぶされたセルの色を判別して、
>色別に違う文字を表示することは出来ますか?
可能です。

セルの、displayformatを利用することで、条件付き書式で変更された色も取得可能です。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 2

条件付き書式に設定している内容を、セルの式に書けば良いと思います。

    • good
    • 3

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