
WindowsXP、Excel2003を使っています。
質問内容なのですが、
まず今作成されているエクセルのB列に
データ>入力規則>設定タブ 入力値の種類を「リスト」
>元の値 に手打ちで項目が入っています。
(例えば 国語,数学,社会,理科・・)
プルダウンで項目を選択した時に
自動的に設定した色にセルが塗りつぶされるようにしたいです。
プルダウンで選択ではなく、手打ちで「国語」「数学」などと打つと、
あらかじめ設定した色に変わることはできます。
ご教授よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#2 です。
すみません。以下の部分は嘘です。コードで同じ色に設定されてました。
> # 失礼ですが、No.1 ご回答で「数学・理科」が同一色になってしまうのは
> # このためです。
その他のことは本当です。すみませんでした。
No.2
- 回答日時:
こんにちは。
まず、4色までなら条件付き書式を併用すればマクロを使わずに済みます。
国語・算数・理科・社会で4つの要素ですから、これでいけそうですが、
あと一つ、空白時の色が必要なので、計5色が必要ですね...
したがって、マクロで解決するしかありません。
# 余談ですが、セルの RangeObject.Interior.Color に RGB 関数で色を設定
# しても、Excel のカラーパレットにある近い RGB 値に勝手に変換されます。
# つまり、この方法では意図した色に設定できません。
# 失礼ですが、No.1 ご回答で「数学・理科」が同一色になってしまうのは
# このためです。
# 書籍でも Color プロパティーと RGB 関数でセルの背景色を設定できると
# いったサンプルを見かけますが、これは誤りです。
# RGB 値により色を設定したい場合は、カラーパレット側を RGB 関数で更新し、
# ColorIndex でセルの色を指定しなければなりません。
【導入手順】
1. Excel で目的のシートを選択し、シート選択タブ上で右クリックメニュー
[コードの表示]
--> Visual Basic Editor(以下 VBE)が起動
2. VBE の一番大きなスペースに下記のソースコードをコピー&ペースト
3. VBE を閉じます
4. B 列にデータを入力し、動作するか確認して下さい
' 以下ソースコード
' セルの値が更新されたとき起動する(イベントプロシージャ)
Private Sub Worksheet_Change(ByVal Target As Range)
' 内容: 値によりセルの背景色を変化させる
Dim C As Range
On Error Resume Next
' ※変化のあったセル=Target のうち B 列の部分のみに参照しなおす
Set Target = Intersect(Target, Columns("B"))
' ※の結果 B 列のセルがあるか調べ、無ければ終了
If Not Target Is Nothing Then
Application.ScreenUpdating = False
' 複数のセルが一度に更新される場合があるので、For ループで
' セル単位で処理を繰り返す
For Each C In Target
' セルの値によりセル背景色を決める
Select Case C.Value
Case "国語": C.Interior.ColorIndex = 35
Case "算数": C.Interior.ColorIndex = 37
Case "理科": C.Interior.ColorIndex = 39
Case "社会": C.Interior.ColorIndex = 36
' その他の値の場合は着色しない
Case Else: C.Interior.ColorIndex = xlNone
End Select
Next
Application.ScreenUpdating = True
End If
End Sub
No.1
- 回答日時:
次のコードでよいと思います
Private Sub Worksheet_Change(ByVal Target As Range)
'A1に入力規則をつける場合です
' ↓
If Target = Range("a1", "a1") Then
Select Case Target.Value
Case "国語"
Target.Interior.Color = RGB(255, 0, 0)
Case "数学"
Target.Interior.Color = RGB(255, 255, 0)
Case "社会"
Target.Interior.Color = RGB(255, 0, 255)
Case "理科"
Target.Interior.Color = RGB(255, 255, 0)
End Select
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
エクセルvbaで、別シートの最下...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
Excel VBAで、 ヘッダーへのセ...
-
Excelのプルダウンで2列分の情...
-
VBAでセルをクリックする回...
-
DataGridViewでコードで値を入...
-
エクセルVBAでコピーして順...
-
Excel vbaで特定の文字以外が入...
-
DataGridViewのセル編集完了後...
-
screenupdatingが機能しなくて...
-
EXCELのVBA-フィルタ抽出後の...
-
VBA初心者です。結合セルを保持...
-
実行時エラー438 オブジェクト...
-
セルに画像挿入すると、右セル...
-
VBAでセルに値が入ったときにイ...
-
Application.Matchで特定行の検索
-
VBAで検索して指定の位置に行を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報