• ベストアンサー

エクセルで、入力された数値でセルの色を変えたいのですが!

入力された数値の大きさにより、セルの色(パターン)を10段階に変化させたいのですが、当方VBEの知識がほとんどありません。 どなたか助けてください。

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

  • ベストアンサー
noname#29107
noname#29107
回答No.4

>Sheet1のセルA2~T2には、あるソフトにより常時変化する数値が >入力され続けます。 そのソフトの仕様によって、どのような手段がとれるかが決まると思います。 妙にExcel側でマクロを組み込むと元のソフトとの連携に障害を及ぼすおそれがあります。 ソフトの開発元に相談される方がよろしいかと思います。 他のソフトとの連携でデータが入力されているような場合、VBAには詳しくないと自認されている状態なら、やめておいた方が無難です。 それでもやってみたいということなら、以下に一応サンプルとして示してみますが、元データの入力仕様がわからないので、正常動作の自信なしです。 Sheet2でのデータの表示位置は、Sheet1と同じとします。その場合、Sheet2のA2に =Sheet1!A2 と入力し、T2までコピーします。 ツール=>マクロ=>Visual Basic EditorでVBEの画面を出し、プロジェクトウィンドウで、Sheet2をダブルクリックし、以下のコードを貼り付けます。 Private Sub Worksheet_Calculate() Call chgclr End Sub VBEの画面のまま、挿入=>標準モジュールで、以下のコードを貼り付けます。 Sub chgclr() Dim MyRng As Range, WkCls As Range Set WkCls = Sheets("Sheet2").Range("A2:T2") For Each MyRng In WkCls   Select Case MyRng.Value   Case 1 To 100     MyRng.Interior.ColorIndex = 22   Case 101 To 200     MyRng.Interior.ColorIndex = 3   Case 201 To 300     MyRng.Interior.ColorIndex = 4   Case 301 To 400     MyRng.Interior.ColorIndex = 5   Case 401 To 500     MyRng.Interior.ColorIndex = 6   Case 501 To 600     MyRng.Interior.ColorIndex = 15   Case 601 To 700     MyRng.Interior.ColorIndex = 31   Case 701 To 800     MyRng.Interior.ColorIndex = 32   Case 801 To 900     MyRng.Interior.ColorIndex = 33   Case 901 To 1000     MyRng.Interior.ColorIndex = 34   Case Else     MyRng.Interior.ColorIndex = 35   End Select Next MyRng End Sub

tes-sekkei
質問者

お礼

早速試してみました。 バッチリです。 どうもありがとうございました。

その他の回答 (3)

  • ryoppemag
  • ベストアンサー率15% (15/96)
回答No.3

例えば、A1を黒にしたい場合以下のようになります Range("A1").Select With Selection.Interior .ColorIndex = 1 End With A列の上から順番に数値を読み取って(FOR文とかで) IFかSELECTで分岐させればよいと思います。 サンプル Sub color()   Dim i As Integer   Dim val_s As String   Dim val_i As Integer   Application.ScreenUpdating = False   For i = 1 To 10     Range("A" & CStr(i)).Select     val_s = Selection.Value     If IsNumeric(val_s) = True Then       val_i = CInt(val_s)       If val_s < 10 Then         With Selection.Interior           .ColorIndex = 20         End With       ElseIf val_s < 20 Then         With Selection.Interior           .ColorIndex = 3         End With       ElseIf val_s < 30 Then         With Selection.Interior           .ColorIndex = 4         End With       ElseIf val_s < 40 Then         With Selection.Interior           .ColorIndex = 5         End With       ElseIf val_s < 50 Then         With Selection.Interior           .ColorIndex = 6         End With       ElseIf val_s < 60 Then         With Selection.Interior           .ColorIndex = 7         End With       ElseIf val_s < 70 Then         With Selection.Interior           .ColorIndex = 8         End With       ElseIf val_s < 80 Then         With Selection.Interior           .ColorIndex = 9         End With       ElseIf val_s < 90 Then         With Selection.Interior           .ColorIndex = 10         End With       Else         With Selection.Interior           .ColorIndex = 11         End With       End If     End If   Next   Application.ScreenUpdating = False End Sub ※一応動作確認はしましたが、バグとかあるかもしれないのでそのままは使わないほうが良いかと エラー処理も入れてないし あくまで簡単なサンプルです!

tes-sekkei
質問者

お礼

どうもありがとうございます。 チャレンジしてみます。

noname#29107
noname#29107
回答No.2

もう少し条件を具体的に書いてもらわないと回答しづらいです。 A列に入力された数値によって、セルの塗りつぶしの色を変化させるサンプルです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng As Range For Each myRng In Target   If myRng.Column = 1 Then   'どの列のデータを対象にするかを指定。この場合A列。     Select Case myRng.Value     Case 1 To 50       myRng.Interior.ColorIndex = 22     Case 51 To 100       myRng.Interior.ColorIndex = 3     Case 101 To 150       myRng.Interior.ColorIndex = 4     Case 151 To 200       myRng.Interior.ColorIndex = 5     Case 201 To 250       myRng.Interior.ColorIndex = 6     Case 251 To 300       myRng.Interior.ColorIndex = 15     Case Else       myRng.Interior.ColorIndex = xlColorIndexNone     End Select   End If Next myRng End Sub ツール=>マクロ=>Visual Basic EditorでVBEの画面を出し、プロジェクトウィンドウで、対象のワークシートをダブルクリック、上記コードを貼り付けます。ワークシートが変更されると上記のマクロが実行されます。 とりあえず6段階の数値にしか対応していませんが、10段階も同じようにすれば、できるでしょう。 ただ、どんなデータを前提にしているのかが全く分からないので、Select Case文が最適かどうかは分かりません。 また、Worksheet_Changeは、使い方によっては、悲惨なことになりますので、十分な注意が必要です。

tes-sekkei
質問者

補足

ご回答ありがとうございます。 具体的な内容は、次のようになります。 Sheet1のセルA2~T2には、あるソフトにより常時変化する数値が入力され続けます。 その数値の変化を、より視覚的にわかりやすく表現するため、Sheet2にその数値を配置すると共に、数値の大きさにより100刻みに100以下~1000以上まで10段階にセルの色を変化させるようにしたいのです。

noname#44934
noname#44934
回答No.1

VBAの知識が無くてもセルの条件書式の設定で出来るとおもいます。 書式メニューの中に条件書式があります。 これでもご希望に添えなかったら済みません。

tes-sekkei
質問者

補足

早速のご回答どうもありがとうございます。 条件付書式の設定は、3項目までとなっております。 10段階の色設定をすることは出来ません。 何か他にもアイディアがございましたら、お教え下さい。