• 締切済み

エクセルの3条件以上の書式設定について

エクセル2003を使っていますが2003では、3つ以上の条件付き書式の設定が出来ません。 マクロを組めば出来るそうですが、やり方が分からないので教えてください。 例えば、月曜日と入力するとセルが青色に、火曜日と入力するとセルが黄色に・・・と言うように各曜日を色付きのセルにしたいのですが・・・・ よろしくお願いしますm(_ _)m

みんなの回答

回答No.6

マクロの自動記録のみで作ってみました 対象はB列のB2セル以降連続したところまで Sub 曜日に色を付ける() 'B2セルから連続して下にデータがあるところを選択   Range("B2").Select   Range(Selection, Selection.End(xlDown)).Select '塗りつぶしなし   Selection.Interior.ColorIndex = xlNone '「月曜日」を塗りつぶしの色は青で「月曜日」に置換する。   Application.ReplaceFormat.Interior.ColorIndex = 5   Selection.Replace What:="月曜日", Replacement:="月曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True '「火曜日」を塗りつぶしの色は黄色で「火曜日」に置換する。水曜日以降も同様   Application.ReplaceFormat.Interior.ColorIndex = 6   Selection.Replace What:="火曜日", Replacement:="火曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True   Application.ReplaceFormat.Interior.ColorIndex = 8   Selection.Replace What:="水曜日", Replacement:="水曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True   Application.ReplaceFormat.Interior.ColorIndex = 10   Selection.Replace What:="木曜日", Replacement:="木曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True   Application.ReplaceFormat.Interior.ColorIndex = 44   Selection.Replace What:="金曜日", Replacement:="金曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True   Application.ReplaceFormat.Interior.ColorIndex = 53   Selection.Replace What:="土曜日", Replacement:="土曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True   Application.ReplaceFormat.Interior.ColorIndex = 3   Selection.Replace What:="日曜日", Replacement:="日曜日", LookAt:=xlWhole, _     SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=True End Sub

この投稿のマルチメディアは削除されているためご覧いただけません。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

一例です。 対象シートタブ上で右クリック→コードの表示→VBE画面に以下のコードを貼り付け、対象シートに曜日を入力して下さい。 尚、色は添付のURLで調整して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) For Each wk In Target With wk.Interior Select Case wk Case "月曜日": .ColorIndex = 33 '青 Case "火曜日": .ColorIndex = 36 '黄 Case "水曜日": .ColorIndex = 34 '水 Case "木曜日": .ColorIndex = 38 'ピンク Case "金曜日": .ColorIndex = 39 '紫 Case "土曜日": .ColorIndex = 43 '緑 Case "日曜日": .ColorIndex = 3 '赤 Case Else: .ColorIndex = xlNone End Select End With Next End Sub

参考URL:
http://www.relief.jp/itnote/xls_colorindex.php
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

答えは出ているが、マクロの記録状態にして、セルのパターン色(7色)をつけてみて、色のコードがどうなるか控える。 そしてIF文で月曜日かと聞いて、該当すれば、月曜日のセルの色に設定すればしまい。火曜日かというコードが7セット続くことになる。 場合の数が2,3ではないのでCASE文というのを普通使う。 Googleで「vba case文」で照会。 http://excelvba.pc-users.net/fol6/6_2.html 丸写ししないでこれらの記事も勉強してください。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける Private Sub Worksheet_Change(ByVal Target As Range)  Dim h As Range  Dim a, b  a = Array("月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日")  b = Array(vbCyan, vbGreen, vbMagenta, vbWhite, vbYellow, vbBlue, vbRed)  On Error GoTo errhandle  For Each h In Target  h.Interior.Color = Application.Index(b, Application.Match(h, a, 0))  Next  Exit Sub errhandle:  h.Interior.ColorIndex = xlNone  Resume Next End Sub ファイルメニューから終了してエクセルに戻る セルに月曜日などを記入すると色が付く。

回答No.2

Private Sub Worksheet_Change(ByVal Target As Range) Dim rngCell As Range For Each rngCell In Target.Cells Select Case rngCell.Cells.Value Case "月曜日" rngCell.Interior.Color = RGB(255, 0, 0) Case "火曜日" rngCell.Interior.Color = RGB(0, 255, 0) Case "水曜日" rngCell.Interior.Color = RGB(0, 0, 255) Case "木曜日" rngCell.Interior.Color = RGB(255, 255, 0) Case "金曜日" rngCell.Interior.Color = RGB(255, 0, 255) Case "土曜日" rngCell.Interior.Color = RGB(0, 255, 255) Case "日曜日" rngCell.Interior.Color = RGB(255, 255, 255) End Select Next rngCell End Sub

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

例 B2:B100の範囲で内容変更時に色が変わる Private Sub Worksheet_Change(ByVal Target As Range) '範囲設定 Column=列、Row=行 If Target.Column = 2 And Target.Row >= 2 And Target.Row <= 100 Then Select Case Target.Value Case "月曜日" Target.Interior.Color = RGB(255, 0, 0) Case "火曜日" Target.Interior.Color = RGB(0, 255, 0) Case "水曜日" Target.Interior.Color = RGB(0, 0, 255) Case "木曜日" Target.Interior.Color = RGB(255, 255, 0) Case "金曜日" Target.Interior.Color = RGB(255, 0, 255) Case "土曜日" Target.Interior.Color = RGB(0, 255, 255) Case "日曜日" Target.Interior.Color = RGB(128, 0, 0) Case Else Target.Interior.Color = xlNone End Select End If End Sub

関連するQ&A