特定のセルを選択すると別のセルを塗りつぶす方法

このQ&Aのポイント
  • 特定のセルを選択すると別のセルを塗りつぶす方法についての質問です。
  • VBAを使用して、指定した範囲のセルを塗りつぶす方法を教えてください。
  • 選択した範囲に応じて、オレンジ色に塗りつぶされるセルと解除されるセルを指定する方法について教えてください。
回答を見る
  • ベストアンサー

特定のセルを選択すると別のセルを塗りつぶす方法

①セルC5:C36の範囲のどこかを選択していると、セルB3:E3(結合されたセル)とセルB4のセルをオレンジ色に塗りつぶし、範囲以外の場所になると塗りつぶしを解除するVBAなどはどの様にすれば宜しいでしょうか? ②セルE5:E36の範囲のどこかを選択していると、セルB3:E3(結合されたセル)とセルE4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。 ③セルG5:G36の範囲のどこかを選択していると、セルG3:I3(結合されたセル)とセルG4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

既にコメントされていますように 規則性がなさそうですので、 後記コードのような「泥臭い」コードになりましょう。 対象列を増やしたい場合にコードをどのように修正するかは イメージできるだろうと思います。 また、 https://okwave.jp/qa/q10041820.html の延長にあるものであれば、 今回提示の対応に合わせて https://okwave.jp/qa/q10041820.html で提示したコードを修正したほうがいいかもしれません。 Option Explicit Const BRng1 = "C5:C36" Const BRng2 = "E5:E36" Const BRng3 = "G5:G36" Const BRng4 = "I5:I36" Const BRng5 = "K5:K36" Const BRng6 = "M5:M36" Const Clr1 = "B3:E3,B4" Const Clr2 = "B3:E3,E4" Const Clr3 = "G3:I3,G4" Const Clr4 = "G3:I3,I4" Const Clr5 = "J3:M3,K4" Const Clr6 = "J3:M3,M4" Private Sub Worksheet_SelectionChange(ByVal Target As Range)  colorClear    If Not Intersect(Target, Range(BRng1)) Is Nothing Then   Range(Clr1).Interior.Color = rgbOrange  End If  If Not Intersect(Target, Range(BRng2)) Is Nothing Then   Range(Clr2).Interior.Color = rgbOrange  End If  If Not Intersect(Target, Range(BRng3)) Is Nothing Then   Range(Clr3).Interior.Color = rgbOrange  End If  If Not Intersect(Target, Range(BRng4)) Is Nothing Then   Range(Clr4).Interior.Color = rgbOrange  End If  If Not Intersect(Target, Range(BRng5)) Is Nothing Then   Range(Clr5).Interior.Color = rgbOrange  End If  If Not Intersect(Target, Range(BRng6)) Is Nothing Then   Range(Clr6).Interior.Color = rgbOrange  End If End Sub Sub colorClear()  Range(Clr1).Interior.Pattern = xlNone  Range(Clr2).Interior.Pattern = xlNone  Range(Clr3).Interior.Pattern = xlNone  Range(Clr4).Interior.Pattern = xlNone  Range(Clr5).Interior.Pattern = xlNone  Range(Clr6).Interior.Pattern = xlNone End Sub

kxsst808
質問者

お礼

ありがとうございます! 無事に解決出来ました。 また宜しくお願いします。

その他の回答 (2)

  • SI299792
  • ベストアンサー率48% (714/1473)
回答No.2

C5:C36,E5:E36 →B3:E3,B4 G5:G36,I5:I36 →G3:I3,G4 K5:K36,M5:M36 →J3:M3,J4 上記の様に塗りつぶしの範囲を増やしていくのですか。 規則性が無いので不可能です。 選択場所は4列毎という規則がありますが、 塗りつぶし位置は B3とG3は列差が5 G3とJ3は列差が3 塗りつぶす列数も、4 3 3 と不規則です。 次はどうなるのですか、まさか列差が1になり、 O5:O36,Q5:Q36 →K3:N3,K4 になるのですか。(前の塗りつぶし場所とダブります) 整理して再質問することをお勧めします。 ここは難解質問してもただですから。

kxsst808
質問者

お礼

ありがとうございます! 無事に解決出来ました。 また宜しくお願いします。

  • SI299792
  • ベストアンサー率48% (714/1473)
回答No.1

C5:C36→B3:E3,B4 E5:E36→B3:E3,B4 G5:G36→G3:I3,G4 規則性はないのですね。他を選択したら色なしでいいですか。 ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) '   [B3:B4,G3:G4].Interior.Pattern = xlNone '   If Not Intersect([C5:C36,E5:E36], Target) Is Nothing Then     [B3:B4].Interior.Color = rgbOrange   ElseIf Not Intersect([G5:G36], Target) Is Nothing Then     [G3:G4].Interior.Color = rgbOrange   End If End Sub

kxsst808
質問者

お礼

ありがとうございます! 無事に解決出来ました。 また宜しくお願いします。

kxsst808
質問者

補足

ありがとうございます。 もう一つ質問させて下さい。 ①セルI5:I36の範囲のどこかを選択していると、セルG3:I3(結合されたセル)とセルI4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。 ②セルK5:K36の範囲のどこかを選択していると、セルJ3:M3(結合されたセル)とセルK4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。 ②セルM5:M36の範囲のどこかを選択していると、セルJ3:M3(結合されたセル)とセルM4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。 ④上記の様に塗りつぶしの範囲を増やしていく場合はどの様にすれば宜しいでしょうか?

関連するQ&A

  • エクセルで特定の複数セルを選択し、別ブックへ一度に「リンク貼り付け」するマクロは?

    エクセルで作成したファイル(1)で、特定の複数セル(連続していないセル)を選択し、まったく同じフォーマットの別ふぁいる(2)へ一度に「リンク貼り付け」する方法があれば教えて頂きたいと思っております。 【BOOK(1) - シート】をコピー ---------------------------------------------------------------- ----------------------   A    B C      D     E FG   H  1 NO    名前   ランク  概要    備考 2 11   あああ      A     ****   ○○○  3 55     いいい     B     ****   △△△   4 77    ううう     C     ****   □□□     ---------------------------------------------------------------- ---------------------- 【BOOK(2) - シート】へリンク貼り付け ---------------------------------------------------------------- ----------------------   A    B C      D      E FG   H  1 NO    名前   ランク  概要    備考 2 11   あああ          ****   3  4       ううう     C     ---------------------------------------------------------------- ---------------------- 列BとC、列EとFとGはセルの結合をしております。 BOOK(1)のセル「A2」「BC2」「BC4」「D4」「EFG2」だけをコピーし、 BOOK(2)の同一セルへリンク貼り付けを行う。 コピーするセルが飛び石のように離れており、2つ以上のセルが結合している列があったりします。 複数のBOOKがあり、すべてのBOOKで上記と同一セルを「リンク貼り付け」する場合に 一度にまとめて実行できるようなVBAやマクロで実現可能な方法があれば教えて下さい。 (勉強も兼ねているため、マクロ記述に補足説明があると助かります) 現在の所、連続しているセルはまとめてリンク貼り付けができるのですが、離れているセルは1つずつ選択して貼り付けております。 この別ファイルへのリンク貼り付け作業が大量にあり、時間がかかるため大変困っております。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • セルの結合による影響

    エクセルのセル範囲を結合させた時の、結合したセル範囲内のセルが示す値について教えてください。 まず、B2:D5のセル範囲を結合します。結合したセル範囲を選択して、数字10を入力します。 任意のセルを選択して、式"=B2"を入力するとセルには、10が表示されます。次に"=C2"を入力すると、0(零)が表示されます。同じく他の、セル範囲のメンバーで同じことをしてもすべて0(零)が表示されます。 次に、式"=B2:C2"を入力すると、10が表示されます。しかし、式"=B2:D2"では、0(零)が表示されます。 さらに、式"=B2:C4"、式"B2:C3"、式"=B2:D5"では、#VALUEが表示されます。 いったい、一番最初に入力した10の数字はどこに格納されているのでしょうか?また、結合したセル範囲ないで、任意のセル範囲を参照してしまった場合、何を参照することになるのでしょうか?単にセル範囲の左上の値ではないようですが? 参考に、式"C2:D2"では、0(零)、式"=C2D3"では、同じように#VALUEとなります。(相対参照にはなっているようです?)詳しい方いらっしゃいませんか? よろしくお願いします。

  • ExcelVBA:セルの範囲を指定し、線を引く方法

    プログラムでセルの範囲を指定し、線を引きたいのですが、マクロでやった結果うまくいったのですが、自分でプログラムを作るとセルの範囲を選択するときに違った動作をしてしまいます。 下のコードはセルAの線、Bの線、……、と線を引くために範囲を選択しているのですが、この部分の選択範囲がおかしくなってしまいます。 Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,G:G").Select With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous End With 一回一回範囲を指定し、線を引く方法もありますが、どのように対処すればよいでしょうか? 回答よろしくお願いします。

  • 結合セルに結合していないセルの値を貼り付けたいです。

    結合セルに結合していないセルの値を貼り付けたいです。 シート1の1行目の[A1-B1-C1-D1]を結合しています。以下同じように[E1-F1-G1-H1]…のように4つづつ結合しています。 この行に、シート2のA1→B1→C1と続く結合していないセルのデータを貼り付けたいのですが、やりかたがわかりません。色々やってみたのですが、うまくゆきません。ご教授お願いいたします。

  • 列選択で勝手に広範囲に範囲選択される

    よろしくお願いいたします。 ・使用環境 エクセル2010 表示は[標準]で[ページ レイアウト]は使用していません。 [範囲選択の拡張]は設定していません。 セルの結合とウィンドウ枠の固定の組み合わせで、行を選択した時に勝手に広範囲に範囲選択されます。 例1) A1:D5の表でA1:B1を結合 セル番地B2を選択して[ウィンドウ枠の固定]を設定 ↓ この状態で1行目を選択すると1~14行目が範囲選択されます。 2行目以降は通常通りに選択可能。 (ウィンドウ枠の固定はG10で固定した場合も同様) 例2) A1:D5の表でB1:C1を結合 セル番地B2を選択して[ウィンドウ枠の固定]を設定 ↓ 1行目を選択すると通常通り1行目のみ範囲選択されます。 セルの結合とウィンドウ枠の固定のどちらかのみの設定の場合は、この現象は発生しません。 使用しているの他のブックでは、列選択でも勝手に範囲選択される現象が起きています。 回避策がございましたら、ご教示ください。

  • エクセル/マクロ/セルの選択について(初心者です)

    最近マクロ機能を使い始めた初心者です。 マクロの記録を使い、ちょっとだけVBEで触っています。 以下のような場合、なんと記述すればよいでしょうか? 詳しい方にはとても簡単だと思われ、お恥ずかしいですが、 教えていただけましたら幸いです。 【実現したい内容】 あるセル範囲を指定している時に、実行すると、 指定していた範囲の行の、A列のみが選択される ※例えばB1:B3、またはC1:C3、またはD1:E3 のをセル範囲を選択している時に、マクロを実行すると いずれの場合もA1:A3を選択する。 表現が分かりにくいでしょうか…?

  • エクセルVBA 選択した値でセルの色を変える方法

    エクセルのVBAです。 指定されたセルの値をプルダウンで選択し、入力(選択)された値によって同じ列の指定した範囲に色を付ける、という内容です。 これを、一つの列のみで行う場合は、以下のコードでOKでした。 わからないのは、列の範囲が5~40まであり、それぞれ値を選択した時にそのセルと同じ列の指定範囲に色をつけることです。 ちなみに、条件付き書式は、すでに条件がいくつかついているため 使用できないという前提でお願いします) ちょっと説明がわかりづらいですが、おわかりになる方いらっしゃいましたら教えてください。よろしくお願いします!! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub Worksheet_Change(ByVal Target As Range) a = Cells(33, 5).Value Select Case a Case "A" Range("E6:E31").Interior.ColorIndex = 6 Case "B" Range("E6:E17").Interior.ColorIndex = 8 Range("E18:E31").Interior.ColorIndex = 2 Case "C" Range("E18:E31").Interior.ColorIndex = 8 Range("E6:E17").Interior.ColorIndex = 2 Case "" Range("E6:E31").Interior.ColorIndex = 2 End Select End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Cells(33, 5)で A を選択した時は、E6:E31を黄色で。 B を選択した時は、E6:E17を水色かつE18:E31を白 C を選択した時は、E18:E31を水色かつE6:E17を白 値なしを選択した時は、色なし(白)

  • セル結合をマクロで行ないたい(その2)

    度々お世話になっております。 エクセル2000ですが、例えばA1:C10の範囲を選択した状態で、一発で横方向のみのセル結合をする(A1,B1,C1を結合、A2,B2,C2を結合、・・・A10,B10,C10を結合)マクロは可能でしょうか?

  • エクセルVBA セルの値を使ってのセル選択

    セルに入力した値でセル選択の範囲を指定したいです セルの値がxの時 セルB1~Cx と セルD100~Ex+100 を同時に選択したいのですが どうすれば良いのでしょう? セルA1に50と入力されているとします Range("B1:C50,D100:E150").Select となってほしい訳です Range や Cells とか調べたのですが分かりませんでした

  • 6つのセルを1つの塊り(マス)と捉えて塗潰す方法

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~r、1~10の合計180個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2,c1,c2の6つのセルで1つのマスとみなすと、 180個のセルは縦:5マス、横:6マスの合計30マスとなります。 この条件で、検索値欄に1つ数字を入れたら、一致した数字が入っているマス (6つのセルの集合)を塗潰すにはどうすればよいですか? 具体的には、    (1)1つのマスに一致した数字が1個の場合は黄色く塗り潰す。    (2)1つのマスに一致した数字が2個の場合は赤色で塗り潰す。    (3)1つのマスに一致した数字が3個の場合は緑色で塗り潰す。    (4)1つのマスに一致した数字が4個の場合は青色で塗潰す。    (5)1つのマスに一致した数字が5個の場合は紫色で塗潰す。     (6)1つのマスに一致した数字が6個の場合はオレンジ色で塗潰す。  a b c d e f g h i j k l m n o p q r 1 02 05 07 07 14 13 15 16 17 28 22 32 33 37 91 92 93 94 95 2 03 03 07 14 13 28 99 31 23 32 31 36 32 37 81 82 83 84 85 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 71 72 73 74 79 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 61 60 54 49 48 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 50 55 52 67 99 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 41 42 43 44 45 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 51 68 75 76 77 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 96 97 88 87 66 9 07 07 10 04 11 05 18 13 27 20 28 33 30 34 86 39 38 49 62 10 07 07 16 14 19 24 24 25 27 26 33 32 35 35 54 86 87 88 78 検索値:07 【結果】 検索値に07を入れたら、下記の6マス(36セル)が塗潰される。 a1,b1,c1,a2,b2,c2 ・・・ 2個一致なので、緑色で塗潰される。 d1,e1,f1,d2,e2,f2・・・ 1個一致なので、黄色で塗潰される。 a3,b3,c3,a4,b4,c4 ・・・ 1個一致なので、黄色で塗潰される。 d3,e3,f3,d4,e4,f4  ・・・1個一致なので、黄色で塗潰される。 a7,b7,c7,a8,b8,c8 ・・・2個一致なので、赤色で塗潰される。 a9,b9,c9,a10,b10,c10・・・4個一致なので、青色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=6セルです。※a1,a2,b1,b2,c1,c2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は30マス(180セル)全体で   6個迄です(1つのマスに6個入る事も有るし、6つのマスに1個ずつ入る事も   あります。)  ・検索値欄に入力できる数字は1~99迄の1つです。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・この質問は先月、「4つのセルを1つの塊り(マス)と捉えて塗潰す方法3」という   タイトルで質問させて頂いた、6セル版での質問です。 以上、よろしくお願いします。

専門家に質問してみよう