• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル クリックでセルの色を変えるには?(2))

エクセルでセルの色を変える方法

このQ&Aのポイント
  • エクセルでA、B、Cの3チームに分ける表を作成し、クリックでセルの色を変える方法を教えてください。
  • シート名タブを右クリックしてコードの表示を選び、VBAコードを貼り付けます。各セルをクリックすると色が変わり、チーム名が表示されるようになります。
  • さらに要望として、2試合目、3試合目のチーム名をア、イ、ウに変更し、色も変えるようにすること、4試合目以降は行わないこと、そしてクリックで動作するようにすることを希望します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ステップ1) 色つけはマクロではなく,条件付き書式を事前に設定しておきます。 手順: ご利用のエクセルのバージョンが不明なので,Excel2003の例でお話しします。 BCD列を列選択 書式メニューの条件付き書式を開始 セルの値が 次の値に等しい ="A" として,書式ボタンでAの色を付ける 追加をクリック セルの値が 次の値に等しい ="B" として,書式ボタンでBの色を付ける 追加をクリック セルの値が 次の値に等しい ="C" として,書式ボタンでCの色を付ける でOKします。 E列からJ列を列選択 書式メニューの条件付き書式を開始 セルの値が 次の値に等しい ="ア" として,書式ボタンでアの色を付ける 追加をクリック セルの値が 次の値に等しい ="イ" として,書式ボタンでイの色を付ける 追加をクリック セルの値が 次の値に等しい ="ウ" として,書式ボタンでウの色を付ける #実際には,AはB列にしか入らないのでB列を選んで条件付き書式を設定し,Aに等しいときにAの色を付ける C列を選んでBに等しいときにBの条件付き書式を付ける D列を選んでCに等しいときにCの条件付き書式を付ける 以下同文 のように設定してもOKです。 条件付き書式も使ったことが無いときは,下記などを参考にします。 2003までのエクセル: http://www.geocities.jp/ogino2600x/1411.html 2007以降のエクセル: http://officetanaka.net/excel/excel2007/027.htm ステップ2) ABC(アイウ)の記入をマクロで行います 今までのマクロを必ず消してから,たとえば次のようなマクロに差し替えます Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim s As Range, c As Integer Dim a1, a2 If Target.Column = 1 Or Target.Column > 10 Then Exit Sub a1 = Array("B", "C", "A") a2 = Array("イ", "ウ", "ア") '位置決め Set s = Target.Offset(0, -(Target.Column + 1) Mod 3) c = Target.Column Mod 3 'クリア s.Resize(1, 3).ClearContents s.Resize(1, 3).Interior.ColorIndex = xlNone '記入 Target = IIf(s.Column = 2, a1(c), a2(c)) Cancel = True End Sub 操作はWクリックで行います。クリックでは行いません。 #出来ないわけではありませんが,クリックでマクロを組むと「セルを選んだ」だけで反応しちゃうので,たとえば矢印キーで次のセルに動いたとか,何かの拍子にそこに選択セルが行っただけで勝手にマクロが発動してしまい,使いにくくてしょーがありません。

hyyhyy
質問者

お礼

詳細なご回答、本当にありがとうございました。 素晴らしいできあがりとなりました。 なお、後日さらに別の要望をさせていただきたいと考えています。 「エクセル クリックで色を変えるには?(3)」として質問することを考えていますので、もしお手数でなければ、またお教えいただければ、本当にうれしく思います。

すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル クリックでセルの色を変えるには?(3)

    15人をA、B、C、D、Eの5チームに分ける表をエクセルでつくりたいと考えています。    (1)1行目に1人目のデータ。A1列に氏名。  (2)1人目がAチームなら、B1をクリックすると赤に変わり、かつ「A」とそのセルに表示。  (3)Bチームに変更したければ、C1をクリックすると青に変わり、かつ「B」とそのセルに表示。その際、B1の色を消す。  (4)Cチームの場合は、D1をクリック、黄色に変わり、かつ「C」と表示。その際、B1もしくはC1の色を消す。  (5)Dチームの場合はオレンジ、Eチームの場合は緑、でそれぞれ同様にE1、F1に「D」「E」と表示。  (6)2人目以降は同様に、2行目以降に表示。それぞれの行が干渉しないようにする。    以上が1試合目で、2試合目、3試合目も行う。  ただし、2試合目以降は、3チームに分ける。  (1)2試合目はG、H、Iのセル、3試合目はJ、K、Lセルを使う。  (2)2試合目、3試合目のチーム名はA、B、Cではなく、ア、イ、ウとする。(2試合目、3試合目共にア、イ、ウ)  (3)1試合目はそのままで、2試合目、3試合目は別の色に変える。(Aチームは薄い赤、Bチームは薄い青、Cチームは薄い黄色)→細かな色の違いにはこだわりません。  (4)4試合目以降は行わない。    文章だけでは、表現力不足が大きく、非常にわかりにくいと思いますが、どうぞよろしくお願いいたします。  何度も同じような質問を重ねています。大変申し訳ありません。

  • エクセル クリックでセルの色を変えるには?

    9人をA、B、Cの3チームに分ける表をエクセルでつくりたいと考えています。    (1)1行目に1人目のデータ。A1列に氏名。  (2)1人目がAチームなら、B1をクリックすると赤に変わり、かつ「A」とそのセル表示。  (3)Bチームに変更したければ、C1をクリックすると青に変わり、かつ「B」とそのセルに表示。その   際、B1の色を消す。  (4)Cチームの場合は、D1をクリック、黄色に変わり、かつ「C」と表示。その際、B1もしくはC1の色を  消す。  (5)2人目以降は同様に、2行目以降に表示。それぞれの行が干渉しないようにする。  なお、以上が1試合目で、2試合目のチーム分けをそれぞれのメンバーの行の、E、F、Gの列を使って、同様に行えるようにできれば完璧なのですが…。  文章がつたなく申し訳ありません。ぜひ教えてください。

  • エクセル クリックで色をつけるには?(4)

    15人をA、B、C、D、Eの5チームに分ける表をエクセルでつくりたいと考えています。    (1)1行目に1人目のデータ。A1列に氏名。  (2)1人目がAチームなら、B1をクリックすると赤に変わり、かつ「A」とそのセルに表示。  (3)Bチームに変更したければ、C1をクリックすると青に変わり、かつ「B」とそのセルに表示。その際、B1の色を消す。  (4)Cチームの場合は、D1をクリック、黄色に変わり、かつ「C」と表示。その際、B1もしくはC1の色を消す。  (5)Dチームの場合はオレンジ、Eチームの場合は緑、でそれぞれ同様にE1、F1に「D」「E」と表示。  (6)2人目以降は同様に、2行目以降に表示。それぞれの行が干渉しないようにする。    以上が1試合目で、2試合目、3試合目も行う。  ただし、2試合目以降は、3チームに分ける。  (1)2試合目はG、H、Iのセル、3試合目はJ、K、Lセルを使う。  (2)2試合目、3試合目のチーム名はA、B、Cではなく、ア、イ、ウとする。(2試合目、3試合目共にア、イ、ウ)  (3)1試合目はそのままで、2試合目、3試合目は別の色に変える。(Aチームは薄い赤、Bチームは薄い青、Cチームは薄い黄色)→細かな色の違いにはこだわりません。  (4)4試合目以降は行わない。    

  • エクセル VBA 変更→セルの色が変わる

    http://okwave.jp/qa/q2601257.html ↑こちらの質問に近いのですが、  ・フォントではなくセルの背景色を変える  ・A列からF列までのみ対象:G列以降は変更しても色が変わらない としたいのです。どのようにすれば良いのでしょうか。 VBAについては全く体系だって勉強したことがないので良く分かっていません。 見よう見まねで以下のようにしてみましたが、うまくいきませんでした。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 6 Then Exit Sub Target.Interior.Color = RGB(255, 0, 0) End Sub 3行目のTarget.~の所が黄色に示されてエラーがでます。 どのようにしたら上手くいくかご教示下さい。

  • クリックでセルの色を変える

    過去の質問を捜したんですが、見つからなかったので質問させていただきます。 表のセルをクリックすると色が変わり、同じ行のセルをクリックするとそのセルの色が変わり先ほどのセルは元の色に戻るやり方がわかりません。 また、次の行のセルをクリックした時、前の行で最後にクリックしたセルの色はそのまま残しておきたいんです。 つまり、1行目では「A」を、2行目では「B」を選択したことが最後に一目で分かるようにしたいんです。 当方初心者ですが宜しくお願いします。

  • 選択セルに計算結果を表示

    エクセルVBAで選択セルに計算結果を表示したいのですが、教えてください。 A列には、ID B・C列には値が入力されています。 下記の構文ですと、行のどこをダブルクリックしても、D列に合計が表示されます。 D列以降のどの行をダブルクリックしても、アクティブなセルに合計を表示したいです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cells(Target.Row, 4) = Cells(Target.Row, 2) + Cells(Target.Row, 3) End Sub

  • 【VBA】クリックする毎にセル色が変わる

    Excelのセルをクリックするたびに、「色なし→赤→青→黄→黒→色なし」などのように色を順番に変更する方法があれば教えてください。 下記のSelectionChangeコードで、「色なし→黄→色なし」にできるのですが、複数の色を順番に表示させたいと思っております。 お手数お掛けいたしますが、よろしくお願い致します。 ================================================= Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim 各セル As Range Set Target = Intersect(Target, Range("A1:A5")) If Target Is Nothing Then Exit Sub For Each 各セル In Target With 各セル If .Value = 1 Then .ClearContents .Interior.Pattern = xlPatternNone Else .Value = 1 .Font.ColorIndex = 6 .Interior.ColorIndex = 6 End If End With Next End Sub =================================================

  • エクセル セルをクリックすると色が変わる

    セルをクリックするとそのセルの色が変わるといったようなマクロが組めるでしょうか。 色を変えたいのは、C2をクリックする「色あり」となり、D2は「色なし」、逆にD2をクリックすると「色あり」となり、C2は「色なし」にしたいです。 予定ではB2に氏名を入れておき、C2に在席、D2に不在といった感じで、社員の在席表を作成したいと考えております。ですから、コードの対象範囲を増やせるようにもお願いしたいのですが、不可能であれば、20人くらいの管理可能なコードを宜しくお願いいたします。

  • Excel VBA で1時的に右クリックを使いたい

    30枚ほどのシートの表を一挙に変更したいです。ところが、各シートに次のコードが入っているため、右クリックしてコピーとか一切使えません。各シートの変更ができるまで、右クリック使いたいです。何か方法ありませんでしょうか? ' 画面の一番上表示 Dim hr As Range Set hr = Range("A1") '左上隅セルを設定 ActiveWindow.ScrollRow = hr.Row '行の一番上にスクロール ActiveWindow.ScrollColumn = hr.Column '列の一番左にスクロール End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示 If Target.Row > 14 And Target.Row < 45 And Target.Column > 13 And Target.Column < 15 Then 明細入力フォーム.Show End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 1 And Target.Column < 3 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 3 And Target.Column < 5 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 5 And Target.Column < 7 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 8 And Target.Column < 10 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 2 And Target.Column < 4 Then UserForm3.Show End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 4 And Target.Column < 6 Then UserForm3.Show End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 6 And Target.Column < 8 Then UserForm3.Show End If If Target.Row > 36 And Target.Row < 44 And Target.Column > 9 And Target.Column < 11 Then UserForm3.Show End If End Sub

  • エクセル2003 VBAでセル移動

    いつもお世話になります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 9 Then If Target.Column = 3 Then Cells(Target.Row, 4).Select ElseIf Target.Column > 5 Then Cells(Target.Row + 1, 1).Select End If End If End Sub これで、B列からC列を飛ばしてD列にセル移動して取りあえずの目的は達成しているのですが、 D列からB列には方向キー移動してくれません。Target.Columnが3になるんで当たり前なんですが・・・ B列の入力ミスがあるときマウスで移動させるか、A列まで戻ってから方向キーで上に上がるかです。 何かいい方法ありませんでしょうか。D列から方向キーで戻るときも、出来ればC列を飛ばしてほしいです。 よろしくお願いします。

このQ&Aのポイント
  • 自動原稿送り装置からコピーやFAXをすると線が入るトラブルについて相談します。
  • パソコンやスマートフォンとの接続は無線LANで行っています。
  • 使用している回線はひかり回線です。
回答を見る

専門家に質問してみよう