• 締切済み

Excel2007条件付書式でフォントを変更したい

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

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

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

kuma_6152
質問者

補足

このVBEを実行すると B列に初めに入力されている日付をA1のセルと一致する日でフォントが変わるようにしたいです このコードでは、B列のセルに入力しないとなりません http://livedoor.blogimg.jp/kumakeiramen/imgs/5/6/56d4e5c2.jpg 本来やりたいのは画像のURLのようにセルの色が変わったところすべてのフォントを変更したいわけです。 説明不足ですいません

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 確かに条件付書式では フォント名・フォントサイズの変更はダメみたいですね! 具体的な条件付書式の設定条件がないのでこちらで勝手にやってみました。 一例です。 (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

kuma_6152
質問者

お礼

補足で書き漏れましたが、背景の色もグレーにしています ところが教えてもらったVBが実行されません どのように書き換えたら良いのでしょうか?

kuma_6152
質問者

補足

条件付書式は同じ日付を入れたセルと一致したら太文字にしてフォントも変えたかったのです 欲を言えば罫線も細線しか設定出来ないので太線に出来たら良かったなと思っています これはあくまで希望で必須では無いです

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

下記リンクをはしごすれば実現できると思います。 ただし、条件付き書式は止めて、他の書式の変更も含めすべてVBAでやる事が前提です。 その方が簡単で、スッキリすると思います。 ご参考まで。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html http://www.relief.jp/itnote/archives/002293.php http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_font.html

関連するQ&A

  • 【Excel】条件付書式について

    Excel2003を使用しています。 ある特定の値(文字列)が入力されたら、同行のある範囲のフォントを白にしたいのですが、条件付書式でできるのでしょうか? (条件付書式はあまり使用したことがなく、条件の設定の仕方がイマイチわかりません。。。) 例えば、O1に○と入力されたら、B1:N1のフォントの色を白にしたいです。B1:N1のデータは他で使用しますが、プリントアウトする際(見た目)には表示させたくないので… 条件付書式では不可能ならば、関数やマクロでも構いません。 マクロについては初心者ですので、参考までにコードを書いていただけると大変助かります。 よろしくお願いします。

  • Excelの条件付書式の表示

    Excel2000です。 Excelの条件付書式では、条件によってセルを色で塗りつぶしたり、(私はあまり使わないですが、フォントや罫線なども)設定できます。 しかし、セルが色で塗りつぶされていた場合に、 ・条件付書式で色が着いているのか、 ・(条件なく)「セルの書式設定」-「パターン」で色が設定されているのか これらのどちらなのかわからない ということになりますよね。 もちろん、色で塗りつぶされたセルを選択して 書式-条件付き書式 を選べば、もし条件付書式が設定されていれば、その条件が表示されるはずです。 しかし、いちいちそうしなくても、どのセルに【どんな】条件付書式が設定されているかすぐ知る方法をお教えください。 最低でも、条件付書式が設定されているセルをパッとすぐ知る方法をお教えください。

  • EXCEL2003 条件付書式が狂ってくる

    条件付書式は、見ためにどのセルに入っているのかわからないというのと、複数の条件付書式が入ると、なぜかその前に決めていた条件付書式が消えてしまっているということがあって、なかなか不便に思っています。(やりかたが悪いのかもと思うのですが) それで、VBAの entireculumn というのを見つけたのですが、 これで対応できるでしょうか? やりたい事は、 1 2*--------------------------- 3*--------------------------- 4 5 6*--------------------------- 7*--------------------------- 上記のように、「*」をつけた行にだけ、行全体に色をつけておく、 というのを条件付書式で、 「数式が」「=$A1="*"」 としたもので、その設定をしているシートに、横にずっと、いろんな関数を入れていってます。 ですが、関数を入れたり、そのプロセスで列挿入などすると、 色がずれてしまうのです。 その回避策として、VBAで最初に色の設定をしておけないでしょうか? 「*がある行だけに色をつける。」 よろしくお願いします。

  • エクセル 条件付書式にて

    エクセルの条件付書式について質問です。 A1セル、セルの書式設定で表示形式をyyyy/m/d(aaa)に設定しています。 A1に11/17と入力すると 2012/11/17(土) と表示されますよね。 土曜日のときにフォントを青にしたく条件付書式を設定したいのですがどのようにしたらよいでしょうか。 無理だと思いつつも =COUNTIF(A1,"*土*") でやってみましたがやはり反映されませんでした。 何か方法ありましたらご教授下さい。 よろしくお願いします。

  • エクセル97条件付書式のフォントについて

    早速ですが質問させていただきます。 エクセル97の条件付書式で値が30%以上を「MSPゴジックの太字」にしたいのですが、書式(F)を押した後、スタイルは太字を選択できるのですが、フォント名を選ぶ項目が灰色で選ぶ事が出来ません。もしできるやり方を知っている方がいたらおしえてください。それでは宜しくお願いします。

  • 条件付書式がうまくいきません

    エクセル2003で金額計算の表を作りました。表の一番右に備考欄を作り、左端から :No.:入金日:入金先:金額:金額:備考欄: と作成し、備考欄に『未』と入力されたらその一列が赤フォントになるよう条件付書式を設定しました。ここまではうまくいってました。 使ってく内に入金先や入金日が同じ所のことがあるので、そのセルのコピー貼付けをしてたんですが、備考欄に『未』と入力すると設定したところ以外も赤フォントになってしまいました。コピー貼付けをすると条件付書式もコピーされるんでしょうかね?何かいい方法をご教授願います。

  • Excel 条件付書式で二つの条件を設定したいんですが

    Excel 条件付書式で二つの条件を設定したいんですが Excel 条件付書式で特定以外のアルファベットを入力すると色が変わるように設定しましたが、 追加で、空白のときは色がつかないようにするにはどうすればよいでしょうか? よろしくお願

  • 条件付書式だけのコピー

    Excelで既存のファイルに条件付書式を設定したいと考えています。 ただし元ファイルには、既に罫線・網掛け等をされているので、条件付書式だけを全体のセルにコピーしたいのです。 そのような方法はあるのでしょうか。 よろしくお願いします。

  • フォームに条件付書式を設定したいのですが、メニュー

    アクセス2007です。 フォームに条件付書式を設定したいのですが、メニューバーのどこから設定すればいいのでしょうか? フォームタブのフォントを見てみましたが、条件付書式は見当たりませんでした。 ご回答よろしくお願いします。

  • 条件付書式 しましまともう1つ書式を設定

    エクセルの表をしましま(1行ごとにグレー)にしたいのですが、 条件付書式で、"=AND(MOD(ROW(),2)=1)" を設定すればしましまにできるところまでは分かりました。 ですが、すでに、*の書いてあるセルを網掛けにする条件付書式が入っているセルがあります。 (条件付書式で、セルの値が 次の値に等しい ="*") *の入っているセルは、網掛けで、かつ、しましまにしたいのですが、 そのような設定は可能なのでしょうか?

専門家に質問してみよう