
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) Excel 数式を使用した条件付き書式が、一つのセルにしか反映されない 3 2022/06/08 23:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
セルに貼り付けた画像の上から...
-
VBA初心者です。結合セルを保持...
-
ExcelVBAを使って、値...
-
Excel vbaで特定の文字以外が入...
-
VBAでセルをクリックする回...
-
特定のセルが空白だったら、そ...
-
エクセルvba:自己セルの情報取...
-
最後のデータ行の任意のセルの...
-
Excle VBA Findメソッドについて
-
VBA初心者です。 VBAで行単位で...
-
エクセルVBAでのセル番地取得プ...
-
excelで置換をしたいんですが
-
SPREADでセルの連結
-
Excel2003 複数セル1列の入力済...
-
エクセルVBAの”TextToColumns”...
-
【VBA】指定したセルと同じ値で...
-
【Excel VBA】指定行以降をクリ...
-
TODAY()で設定したセルの日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelのプルダウンで2列分の情...
-
【Excel VBA】指定行以降をクリ...
-
任意フォルダから画像をすべて...
-
VBAでセルをクリックする回...
-
”戻り値”が変化したときに、マ...
-
VBA実行後に元のセルに戻りたい
-
Excel vbaで特定の文字以外が入...
-
【VBA】シート上の複数のチェッ...
-
Excel VBA マクロ ある列の最終...
-
Excel VBAで、 ヘッダーへのセ...
-
DataGridViewの各セル幅を自由...
-
VBからEXCELのセルの値を取得す...
-
EXCELのVBA-フィルタ抽出後の...
-
VBAでセル同士を比較して色付け
-
Application.Matchで特定行の検索
おすすめ情報