• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定のセルを選択すると別のセルを塗りつぶす方法)

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

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

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答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
  • ベストアンサー率47% (780/1631)
回答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
  • ベストアンサー率47% (780/1631)
回答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

専門家に質問してみよう