• 締切済み

[Excel VB]プルダウンで文字選択、自動的に色を変える

WindowsXP、Excel2003を使っています。 質問内容なのですが、 まず今作成されているエクセルのB列に データ>入力規則>設定タブ 入力値の種類を「リスト」 >元の値 に手打ちで項目が入っています。 (例えば 国語,数学,社会,理科・・) プルダウンで項目を選択した時に 自動的に設定した色にセルが塗りつぶされるようにしたいです。 プルダウンで選択ではなく、手打ちで「国語」「数学」などと打つと、 あらかじめ設定した色に変わることはできます。 ご教授よろしくお願いいたします。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

#2 です。 すみません。以下の部分は嘘です。コードで同じ色に設定されてました。 > # 失礼ですが、No.1 ご回答で「数学・理科」が同一色になってしまうのは > # このためです。 その他のことは本当です。すみませんでした。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答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

  • Uminchw
  • ベストアンサー率20% (1/5)
回答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

  • excel2010でプルダウンリストが出ません

    こんばんは。 会社内で、LANを使って各部署でexcelの同じ表に入力作業をしているのですが、部署Aでプルダウンリストを作成しても、他の部署では入力する表は同じのが表示されるのですが、プルダウンリストが出ません。どれもバージョンは2010ですが、他の部署で開くと上に互換モードと出ています。作成した時の保存の様式などの問題でしょうか? また、部署Bのexcel2010では部署Aと同じやり方をしてデータ入力規則→リスト選択→元の値 としてもその後の設定するリストの選択に移動できません。 上記2点で仕事が進みません。 初心者で困っています。どうしたらよいのか教えてください。 よろしくお願いします。

  • Excel2003でのプルダウンリストの設定方法についてお聞きします。

    Excel2003でのプルダウンリストの設定方法についてお聞きします。 『入力規則から作成するプルダウンリスト』でも 『フォームから作成するコンボボックス』でもない、プルダウンリストを作成したいのです。 色々検索したり試行錯誤しましたが、設定方法を見付けられませんでした。 VBAかな?とも思ったのですが分からず。添付ファイルをご参照ください。 作成したいのは赤い矢印のプルダウンリストになります。 WEB上で見かけるアンケート等にある様なプルダウンリストで、セル自体に埋め込まれて?います。 セルがアクティブになっていなくとも常に表示されていて、選択肢は別シートからリンクされています。 右クリックも切り取りも削除も出来ず、セルに数式が入っている形跡もないのです。 どなたかご存知の方がいらしゃいましたら、ご教示ください。 評価・お礼は共にさせて頂きます、どうぞ宜しくお願いいたします。

  • A1に入力規則が設定されています。プルダウンリストから選択すると、その

    A1に入力規則が設定されています。プルダウンリストから選択すると、その表示される文字が、L1の位置に表示されます。これはどこを設定するとこうなるのですか?

  • 【Excel】プルダウン用リストの作成

    Excel2003で現金出納帳のような書式で家計簿をつけています。 科目や摘要をプルダウンメニューで選べるように、「入力規則」でプルダウン用リストを登録しようとしているのですが、リストの元になるデータを別シートに作ったのですが、その範囲を指定できませんでした。 操作方法が間違っているのか、それとも別シートのデータは指定できないのか、教えていただけないでしょうか?また、これとは別に良い方法があるようでしたら、教えていただけると嬉しいです。 よろしくお願いします。

  • 【EXCEL】リストに保護をかけつつ、選択を可能にしたい

    Excel2003を使用しています。 入力規則よりリストを作成し、エラーメッセージより、そのリストに書かれているもの以外は入力できないように設定しています。 ただこの方法では、リストへの入力は拒否できますが、リストへの貼り付けを拒否できません。 逆にセルに保護をかけると、貼り付けを拒否できますが、リストの選択も同時に拒否されてしまいます(Excel2000では普通に選択できるのですが…) ・リストへの貼り付けを禁止させる ・リストから選択できる この2つを同時に満たす方法はないのでしょうか??? Excel2000でできたものが、できないはずはないと思うのですが・・・ よろしくお願いします。

  • Excelで、リストから選択したら自動的にリンク

    エクセルの「入力規則」で、入力値の種類を「リスト」にし、 プルダウンメニューで選択できるようにしたいのですが、 そこまでは自分でできるのですが、例えばそのリストが 何かのホームページのリストだったとして、 選択したリストに応じて自動的にリンクが貼られるように するには、どうすればいいのでしょうか? エクセルではこういった処理はできないでしょうか?

  • 【Excel】日付のプルダウンの設置とエラー処理

    マクロを使わないで可能であれば教えて下さい。 【やりたいこと】 Excel2002で以下の項目を満たすように年月の設定をしたいです。 <見た目>  ●●年■■月 ~ ○○年□□月 <満たしたい項目> ・年と月はそれぞれプルダウンで選択。(4つのプルダウンが存在) ・必ず「●●(過去)から○○(未来)」の形となる。 【やった(やろうとした)けど失敗した事】 ・○○を選択時に●●以前の選択を出来ないように関数を組んだ。  →●●を再度プルダウンで選択する事で「未来~過去」の形が可能なので失敗。 ・●●と○○を比較して入力規則使ってエラーメッセージを出す。  →入力規則が関数の結果を見てくれず失敗。 ・●●と○○を比較して、条件付書式を使って●●に取り消し線をつける  →見た目理解しにくいので失敗。 情報が足りないかもしれません。すみません。よろしくおねがいします。

  • Excel2000です。リストから選択した特定のものだけ文字色を自動で変えたい。

    A列に店舗リストが入っています。 B1セルにA列店舗リストを入力規則で入力させるように設定しました。 特定の店舗を選択した場合に限り文字色を変更させたいのですが…条件付き書式でうまくいきません。そうしたらいいでしょうか?お知恵を拝借ください。

  • Excelでシートの違うリストからプルダウンで選択して、、

    Excelの入力規則を使って、セルの入力をプルダウンを使って、入力していました。そのとき、セルの入力値を他のシートに作って、選択していました。 今回の質問は、他のシート選択する値を増やしたいので、範囲を広げたいのですが、どうもやり方がわかりません。 入力規則を使って、他のシートのリストから選択するやり方は解っています。他のシートの値のあるセルの範囲を広げたいのですが、、 やり方を忘れてしまって、ややこしかったと、思いますが、詳しく教えていただける方、よろしくお願いします。

  • Excel2000ドロップダウンリストから選択するとき

    Excel2000初心者です。 現在作業表作成をしています。 ”作業者名””備考”らん等をつくったのですが、 このらんにはいるのは、だいたい決まった名前やコメントなので、ドロップダウンリストから選択出来るように データの入力規則設定をしました。 入力値の種類をリストにして元の値のところに設定したリスト名を入れたのですが、 いざ表でドロップダウンリストを表示させようとすると 選択肢に”リスト名”とでてしまい、本来選びたいリストの中身がでてこないのです。 これはどういうことなのでしょうか? あと、ドロップダウンリスト以外の文字を入れたい場合は直に入力することができるのでしょうか? わかりづらい質問で申し訳ありませんが、教えてください。

専門家に質問してみよう