アプリ版:「スタンプのみでお礼する」機能のリリースについて

条件付書式の設定でフォントが変更出来ないことは分かったのですが、ExcelのVBで条件付書式が一致したときにフォントを変えるにはどうすれば良いのでしょうか?

本来なら条件付書式でフォントを設定出来ても良さそうですけどね

A 回答 (4件)

No.2・3です。



とりあえず↓の画像のような場合でやってみました。
A~D列は条件付書式で「グレー25%」の色になるように色だけ設定しておきます。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 Then Exit Sub
If Target = Range("A1") Then
With Target.Resize(1, 4)
.Font.Name = "HG創英角ポップ体"
.Font.Bold = True
.Borders.Weight = xlMedium
End With
Else
With Target.Resize(1, 4)
.Font.Name = "MS Pゴシック"
.Font.Bold = False
.Borders.Weight = xlThin
End With
End If
End Sub

上記でA列データがA1セルと一致するA~D列のフォント・枠線が変更できると思います。

尚、上記コードはA列データが変更時のみ実行されるコードですので、
A列データが一つずつ変更された時点でのみ有効です。
そこで一案ですが、塗りつぶし・フォント・枠線等々の変更すべてをマクロでやってみてはどうでしょうか?
ただ毎回手作業でマクロを実行する必要があります。
(条件付書式でセルに色が付いている場合は色変更できませんので、条件付書式はすべてクリアしておく必要があります。)

すでに存在しているコード
Private Sub Worksheet_Change(ByVal Target As Range)
・・・
・・・
End Sub
をすべて削除して↓のコードにやりかえます。
Alt+F8キー → マクロ → マクロ実行 といった操作になります。

Sub フォント変更()
Dim i As Long, j As Long, k As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
j = ActiveSheet.UsedRange.Columns.Count
If i > 3 Then
With Range(Cells(4, 1), Cells(i, j))
.Interior.ColorIndex = xlNone
.Font.Name = "MS Pゴシック"
.Font.Bold = False
If .Borders.LineStyle = xlContinuous Then
.Borders.Weight = xlThin
End If
End With
End If
For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = Cells(1, 1) Then
For k = 1 To j
If Cells(i, k) <> "" Then
With Cells(i, k)
.Interior.ColorIndex = 15
.Font.Name = "HG創英角ポップ体"
.Font.Bold = True
.Borders.Weight = xlMedium
End With
End If
Next k
End If
Next i
End Sub

この程度しか思いつきません。

※ 条件付書式がご希望でしたが結局かけ離れた回答になってしまいましたかね?m(_ _)m
「Excel2007条件付書式でフォントを」の回答画像4
    • good
    • 0

No.2です!



>条件付書式は同じ日付を入れたセルと一致したら太文字にしてフォントも変えたかったのです

とありますが、具体的にセル配置が判りませんので
↓の画像のようにやってみました。

(1)B列全体を対象セルとする
(2)A1セルに「日付を入れたセル」とする
(3)B列には条件付書式でA1セルと等しい場合は「グレー」に塗りつぶしを設定
(4)元の表には「格子」の罫線がある

上記の前提でのコードです

前回同様画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてB列にデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Columns(2)) Is Nothing Or Selection.Count <> 1 Then Exit Sub
On Error Resume Next
If Target = Range("A1") And Target <> "" Then

'ココで設定する
With Target
.Font.Name = "MS P明朝" '←「MSP明朝」としている
.Font.Bold = True
.Borders.Weight = xlMedium
End With

'条件以外の場合設定を元に戻す
Else
With Target
.Font.Name = "MS Pゴシック"
.Font.Bold = False
.Borders.Weight = xlThin '←元の表の罫線が「格子」の場合、元に戻すため
End With
End If
End Sub 'この行まで

※ 細かい表配置・設定条件等が判らないので、やり方だけです。m(_ _)m
「Excel2007条件付書式でフォントを」の回答画像3

この回答への補足

このVBEを実行すると
B列に初めに入力されている日付をA1のセルと一致する日でフォントが変わるようにしたいです
このコードでは、B列のセルに入力しないとなりません
http://livedoor.blogimg.jp/kumakeiramen/imgs/5/6 …

本来やりたいのは画像のURLのようにセルの色が変わったところすべてのフォントを変更したいわけです。

説明不足ですいません

補足日時:2012/10/07 16:29
    • good
    • 0

こんばんは!


確かに条件付書式では
フォント名・フォントサイズの変更はダメみたいですね!

具体的な条件付書式の設定条件がないのでこちらで勝手にやってみました。

一例です。
(1)A列すべてで
(2)A列のデータが0より大きく、1000以下の場合
(3)フォント名を「MSP明朝」にフォントサイズを「16」ポイントとしています。
(フォント色・セル色等々その他の設定は可能のようですので上記2点だけの設定としています)

シートモジュールになりますので操作したいSheet見出し上で右クリック → コードの表示
→ VBE画面に↓のコードをコピー&ペーストしてA列にデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
On Error Resume Next
If Target > 0 And Target <= 1000 Then
With Target
.Font.Name = "MSP明朝"
.Font.Size = 16
End With
End If
End Sub

こんなんではどうでしょうか?

尚、前述のようにA列に条件付書式の設定があっても問題なく動作すると思います。m(_ _)m

この回答への補足

条件付書式は同じ日付を入れたセルと一致したら太文字にしてフォントも変えたかったのです

欲を言えば罫線も細線しか設定出来ないので太線に出来たら良かったなと思っています
これはあくまで希望で必須では無いです

補足日時:2012/10/06 07:00
    • good
    • 0
この回答へのお礼

補足で書き漏れましたが、背景の色もグレーにしています

ところが教えてもらったVBが実行されません
どのように書き換えたら良いのでしょうか?

お礼日時:2012/10/06 09:38

下記リンクをはしごすれば実現できると思います。


ただし、条件付き書式は止めて、他の書式の変更も含めすべてVBAでやる事が前提です。
その方が簡単で、スッキリすると思います。
ご参考まで。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …

http://www.relief.jp/itnote/archives/002293.php

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
    • good
    • 0

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