• ベストアンサー

excel2000 条件付書式5つ

A1~J10に100個の数値があり、 行ごとの1位~5位にそれぞれ書式を あたえます。 マクロの記録機能を使って1位~3位を。 その後別で4位・5位を記録し、くっつけて みました。 つけたい書式は 以下のマクロの通りのセルのパターン・フォントの色です。 以下は記録したものをくっつけてつくったマクロです。 動作しません。 Sub 条件付書式5つ() Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,1)" Selection.FormatConditions(1).Font.ColorIndex = 2 Selection.FormatConditions(1).Interior.ColorIndex = 1 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,2)" Selection.FormatConditions(2).Font.ColorIndex = 2 Selection.FormatConditions(2).Interior.ColorIndex = 16 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,3)" Selection.FormatConditions(3).Interior.ColorIndex = 15 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,4)" Selection.FormatConditions(4).Font.ColorIndex = 2 Selection.FormatConditions(4).Interior.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,5)" Selection.FormatConditions(5).Font.ColorIndex = xlAutomatic Selection.FormatConditions(5).Interior.ColorIndex = 38 End Sub 初心者のためどうしたらいいのかまったく わかりません。 どうぞお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1さんのおっしゃるように、条件付書式は、3個までなので、以下のように、イベント・プロシージャにします。 現在のデータのあるところのシートの、モジュール(シートタブを右クリックすると、「コードの表示」というのがあるのでそれをクリック)に、貼り付けてください。 なお、色のほうは、もう少し工夫したほうがよいですね。黒(1)ですと本当の塗りつぶしで、下の文字がかすかにしか見えませんから。 Private Sub Worksheet_Change(ByVal Target As Range)  Dim myRng As Range  Dim myColor As Variant  Dim myVal As Double  Dim i As Long, j As Long, c As Object  myColor = Array(1, 16, 15, 3, 38) '色のColorIndex  Set myRng = Range("A1:J2") '設定範囲  Application.EnableEvents = False  Application.ScreenUpdating = False  For i = 1 To myRng.Rows.Count   myRng.Rows(i).Interior.ColorIndex = xlNone   For j = 1 To 5    myVal = Application.Large(myRng.Rows(i), j)    If Not IsError(myVal) Then     For Each c In myRng.Rows(i).Cells      If myVal = c.Value Then       c.Interior.ColorIndex = myColor(j - 1)      End If     Next c    End If   Next j  Next i  Set myRng = Nothing  Application.ScreenUpdating = True  Application.EnableEvents = True End Sub

momimomi23
質問者

お礼

ありがとうございます。 モジュールに貼り付けてみたのですが、 私がど素人なためか動きません。 ご親切に貼り付けかたまでお教えいただいたのに 活用できず申し訳ありません。 Wendy02さんの書いていただいたものを 理解できるようVBAの勉強をしたいと思っています。 ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

momimomi23様へ >モジュールに貼り付けてみたのですが、 >私がど素人なためか動きません。 Sheet1にデータを書き込んだら、Sheet1のモジュールです。 そして、何か、そのA1~J10の範囲内に、数字を、ひとつでよいので改めて入力してみてください。 それで起動しませんか?イベントといって、引き金になるキー入力を必要とします。

momimomi23
質問者

お礼

キー入力必要とは知りませんでした。 ただいま自宅におり、エクセルのない環境のため 明日試させていただきます。 ありがとうございます。

momimomi23
質問者

補足

おっしゃるとおり、キー入力をしてみると 起動しました。 本当にありがとうございました。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

条件付書式は3パターンまでというのが上限ですからお望みのことを行うなら、1から条件付書式みたいな動作をするコードを書く必要があります。 難しいようなら1位~3位までで我慢されたらどうでしょう。

momimomi23
質問者

お礼

ありがとうございます。 コードの書き方などはまだ勉強しておらず、 マクロの記録どまりの知識ですので、 これから勉強していこうと思っています。 ありがとうございました。

関連するQ&A