- ベストアンサー
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 初心者のためどうしたらいいのかまったく わかりません。 どうぞお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
momimomi23様へ >モジュールに貼り付けてみたのですが、 >私がど素人なためか動きません。 Sheet1にデータを書き込んだら、Sheet1のモジュールです。 そして、何か、そのA1~J10の範囲内に、数字を、ひとつでよいので改めて入力してみてください。 それで起動しませんか?イベントといって、引き金になるキー入力を必要とします。
お礼
キー入力必要とは知りませんでした。 ただいま自宅におり、エクセルのない環境のため 明日試させていただきます。 ありがとうございます。
補足
おっしゃるとおり、キー入力をしてみると 起動しました。 本当にありがとうございました。
- popesyu
- ベストアンサー率36% (1782/4883)
条件付書式は3パターンまでというのが上限ですからお望みのことを行うなら、1から条件付書式みたいな動作をするコードを書く必要があります。 難しいようなら1位~3位までで我慢されたらどうでしょう。
お礼
ありがとうございます。 コードの書き方などはまだ勉強しておらず、 マクロの記録どまりの知識ですので、 これから勉強していこうと思っています。 ありがとうございました。
お礼
ありがとうございます。 モジュールに貼り付けてみたのですが、 私がど素人なためか動きません。 ご親切に貼り付けかたまでお教えいただいたのに 活用できず申し訳ありません。 Wendy02さんの書いていただいたものを 理解できるようVBAの勉強をしたいと思っています。 ありがとうございました。