dポイントプレゼントキャンペーン実施中!

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

初心者のためどうしたらいいのかまったく
わかりません。

どうぞお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます。

モジュールに貼り付けてみたのですが、
私がど素人なためか動きません。
ご親切に貼り付けかたまでお教えいただいたのに
活用できず申し訳ありません。

Wendy02さんの書いていただいたものを
理解できるようVBAの勉強をしたいと思っています。

ありがとうございました。

お礼日時:2005/05/30 17:00

momimomi23様へ



>モジュールに貼り付けてみたのですが、
>私がど素人なためか動きません。

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

この回答への補足

おっしゃるとおり、キー入力をしてみると
起動しました。

本当にありがとうございました。

補足日時:2005/05/31 12:49
    • good
    • 0
この回答へのお礼

キー入力必要とは知りませんでした。

ただいま自宅におり、エクセルのない環境のため
明日試させていただきます。

ありがとうございます。

お礼日時:2005/05/30 20:50

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



難しいようなら1位~3位までで我慢されたらどうでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

ありがとうございました。

お礼日時:2005/05/30 17:02

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