- ベストアンサー
エクセル2003でテキストボックスの色分けをする方法
- エクセル2003で、シート1のA1セルとB1セルの値に基づいて、シート2のテキストボックスの色分けをしたい場合の方法について解説します。
- A1セルの値が-5より小さい場合は赤色に、A1セルの値が-5より大きくB1セルの値が-3より大きい場合は緑色に、A1セルの値が-5より大きくB1セルの値が-3から-5の範囲内の場合は青色に、A1セルの値が-5より大きくB1セルの値が-5より小さい場合は赤色に設定する方法を説明します。
- エクセル2003の場合、条件付き書式を使用して、セルの値に基づいてテキストボックスの色を変更することができます。詳しい手順を以下で説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
merlionXXです。 先ほどの回答に数字の誤りを発見しました。 また、フォントの色を指定するColorIndexと、オートシェープの線や塗りつぶし色を指定するSchemeColorの数値間の相関関係が分かりましたので以下のように変更します。 Sheet1のA1~B100の範囲に入力された場合に作動します。 Target.Rowで入力行を取得し、その数値に対応するSheet2のオートシェープ(テキストボックス)のフォントおよび線の色を変更します。 Sheet1のシートモジュールに以下を記述してください。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:B100")) Is Nothing Then Exit Sub If Cells(Target.Row, "A").Value < -5 Then c = 10 Else Select Case Cells(Target.Row, "B").Value Case Is > -3 c = 17 Case Is < -5 c = 10 Case Else c = 12 End Select End If With Sheets("Sheet2").Shapes("テキスト " & Target.Row) .Line.ForeColor.SchemeColor = c .TextFrame.Characters.Font.ColorIndex = c - 7 End With End Sub
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
> セルの番号とテキストボックスの番号が一致しない場合があるので、 バラバラなのですか?だったら、テキストボックスの番号を変えたらどうでしょう?
お礼
やはり、それが一番早いようですね。 色々と有難う御座いました。
- merlionXX
- ベストアンサー率48% (1930/4007)
> あとテキストボックスが100個ほどあるのですが、 では、いちいちテキストボックスごとにコードを書いてはいられませんね。 仮にA、B列の行番号と、テキストボックスの名前"テキスト 1"の番号が一致しているなら以下のようにすれば一発でいけますね。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:B100")) Is Nothing Then Exit Sub If Cells(Target.Row, "A").Value < -5 Then c = 10 f = 3 Else Select Case Cells(Target.Row, "B").Value Case Is > -3 c = 17 f = 10 Case Is < -5 c = 10 f = 5 Case Else c = 12 f = 32 End Select End If With Sheets("Sheet2").Shapes("テキスト " & Target.Row) .Line.ForeColor.SchemeColor = c .TextFrame.Characters.Font.ColorIndex = f End With End Sub
- merlionXX
- ベストアンサー率48% (1930/4007)
質問ではオブジェクトおよび境界値があいまいなので以下の前提と仮定しました。 「テキストボックス」とはコントロールツールではなくオートシェープのテキストとし、名前が "テキスト 1" とする。 Sheet1のA1セルまたはB1セルに数値が手入力された場合、Sheet2に配置された"テキスト 1"の塗りつぶし色を自動で変える。 A1のセルが-5未満の場合は赤 A1のセルが-5以上の場合、 B1のセルが-3を超える場合は緑 B1のセルが-3から-5の場合は青 B1のセルが-5未満の場合は赤 以下の手順でやってみてください。 1.シートのタブを右クリックし、「コードの表示」を選択。 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。 '*****ここから下をコピペ***** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" And Target.Address <> "$B$1" Then Exit Sub If Range("A1").Value < -5 Then c = 10 Else Select Case Range("B1").Value Case Is > -3 c = 17 Case Is < -5 c = 10 Case Else c = 12 End Select End If Sheets("Sheet2").Shapes("テキスト 1").Fill.ForeColor.SchemeColor = c End Sub '*****ここより上までをコピペ***** 3.AltキーとF11キーを同時に押してワークシートへもどります。
お礼
有難う御座います。 何となくですが解ってきました。 実際は塗つぶしではなく、枠の色と文字色を変更したいのです。 あとテキストボックスが100個ほどあるのですが、 If から End If とその下の行を繰り返せばいいのでしょうか? A1・B1・テキスト1を2・3と増やして行くという具合に 宜しくお願いいたします。
お礼
有難う御座います。 利用させて頂きます。 手が空いている時で構いませんので、 セルの番号とテキストボックスの番号が一致しない場合があるので、 テキストボックス1つづつで対応のさせ方もわかればお願いいたします。 いちばん最初のもので試したのですが、 2つ目のテキストボックスに対応できないんです。 素人なりにやってみたのですがだめでした。 宜しくお願いいたします。