• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA教えて下さい)

VBAでセルへの数値反映と色の変更

このQ&Aのポイント
  • VBAを使用して、指定した数値を入力したセルに反映させ、そのセルの色を変更する方法について教えてください。
  • 具体的には、A1に数値を入力し、コマンドボタンをクリックすると、B1~B20のセルにその数値が反映され、赤色に変わるようにしたいです。
  • また、ただし、B1~B20の中に黄色の背景色が設定されているセルがある場合、そのセルより上のセルは数値の反映を無視し、背景色より下のセルのみに数値を反映するようにしたいです。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>黄色背景色のセル自体は無視をして下さい。  それですと、黄色背景色のセルが複数存在する場合、「最初に現れた黄色背景色のセル」と「2番目以降に現れた黄色背景色のセル」との間に挟まれた「背景色が黄色ではないセル」に対してのみ、 >数値が反映される >その反映された数値は赤色にする という処理を行い、「2番目以降に現れた黄色背景色のセル」に関してはそのままにしなければなりませんから、処理が下記の様に複雑になります。 Private Sub commandbutton_click() Dim c As Range, myRange As Range, myBoolean As Boolean Set myRange = Range("B1:B20") myBoolean = False For Each c In myRange If c.Interior.Color = RGB(255, 255, 0) Then If Not myBoolean Then Set myRange = Nothing myBoolean = True End If ElseIf myRange Is Nothing Then Set myRange = c Else Set myRange = Union(myRange, c) End If Next c With myRange .Value = Range("A1").Value .Font.Color = vbRed End With End Sub

kousukebojto
質問者

お礼

訂正して頂きありがとうございます! 凄すぎます 思った結果です 勉強させて頂きました! コードありがとうございます!

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

>黄色背景色より上のセルはA1に入力された数値は無視し >黄色背景色より下のセルはA1に入力された数値を反映する との事ですが、「黄色背景色のセル」自体は「黄色背景色のセルより上のセル」でもなければ「黄色背景色のセルより下のセル」でもない訳ですので、無視すれば良いのか、反映すれば良いのか、どちらにすれば宜しいのでしょうか?  取り敢えず仮の話として、「黄色背景色のセル」自体も反映するものとした場合には、以下の様なVBAになります。 Private Sub commandbutton_click() Dim c As Range, myRow As Long myRow = 2 For Each c In Range("B2:B20") If c.Interior.Color = RGB(255, 255, 0) Then myRow = c.Row Exit For End If Next c With Range("B" & myRow & ":B20") .Value = Range("A1").Value .Font.Color = vbRed End With End Sub

kousukebojto
質問者

お礼

すみません 説明不足でした 黄色背景色のセルは無視でお願いします

kousukebojto
質問者

補足

すみません 説明不足でした 黄色背景色のセル自体は無視をして下さい。

関連するQ&A

専門家に質問してみよう