入門レベルの技術では、そのすべての内容は少し無理ではないでしょうか?
出来るところから手を付けて、どのぐらい書けているのか教えてください。
掲示板に質問を書けば、しょせん、回答者のワザ比べになって、質問者さんの手からは離れてしまいます。どれがどうとか分からないはずです。
ただ、VBAで作るに当たって、自分のしたいことをきちんとまとめることが大事かと思います。
条件をまとめると
・C列の1~20行目までに入力規則があって、「りんご,みかん,メロン」とある。
・メロンと選択した時だけに、Interior = 黒, Font = 白となる。
そうでない時は、元に戻す。
・貼り付けはしない。
----VBAで、ここまでは、出来ると思います。----
・二つが同じ場合は、その間のBorderの色を反転する
そうでない場合は、元の色(にする。
・ただし、入力順序は関係ないとする。
こういうことだと思います。もしかしたら、この後に付け足したいという話になるかもしれませんが、まず、VBAを勉強しているなら、自分でぎりぎりまで考えてください。しょせん、私のコードなどが参考になるなんて大それたことを考えて書いているわけではありません。
'//
Private Sub Worksheet_Change(ByVal Target As Range)
Const KEYWORD$ = "メロン"
If Intersect(Target, Range("C1:C20")) Is Nothing Then Exit Sub
With Target
If .Row = 1 Then
ColorChange Target, KEYWORD
Else
ColorChange Target.Offset(-1).Resize(3), KEYWORD
End If
End With
End Sub
Private Function ColorChange(rng As Range, Keywd As String)
Dim c As Range
Const xlColorBlack = 1!
Const xlColorWhite = 2!
For Each c In rng
If c.Value Like Keywd And c.Offset(1).Value Like Keywd Then
c.Resize(2).Borders(xlInsideHorizontal).ColorIndex = xlColorWhite
ElseIf c.Value Like Keywd Then
c.Interior.ColorIndex = xlColorBlack
c.Cells.Font.ColorIndex = xlColorWhite
Else
c.Interior.ColorIndex = xlColorIndexNone
c.Cells.Font.ColorIndex = xlAutomatic
c.Cells.Borders.ColorIndex = xlAutomatic
End If
Next
End Function
マクロを併用するなら条件付き書式は解除してしまっても構わないですし,逆に2007ですからごりごりとチカラワザで条件付き書式だけで組み立ててもそんなに難しくはない(単に発想だけの問題)の様子です。
練習用のサンプルマクロ:
あまり難しく考えず,やるべき事を少し丁寧に淡々と記述していくだけです。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Range
Dim ha As Range
Dim hx As Range
On Error Resume Next
Set hx = Application.Intersect(Target, Range("C1:C20"))
If hx Is Nothing Then Exit Sub
For Each ha In hx.Areas
For Each h In ha
If h = "メロン" Then
h.Interior.ColorIndex = 1
h.Font.ColorIndex = 2
If h.Offset(-1) = "メロン" Then
Range(h, h.Offset(-1)).Borders(xlInsideHorizontal).ColorIndex = 2
End If
If h.Offset(1) = "メロン" Then
Range(h, h.Offset(1)).Borders(xlInsideHorizontal).ColorIndex = 2
End If
Else
h.Interior.ColorIndex = xlNone
h.Font.ColorIndex = xlAutomatic
h.Borders.ColorIndex = xlAutomatic
End If
Next
Next
End Sub
練習用の条件付き書式
条件1 C1からC19まで 数式が =AND(C1="メロン",C2="メロン") で下の罫線を白に
条件2 C2からC20まで 数式が =AND(C1="メロン",C2="メロン") で上の罫線を白に
条件3 C1からC20まで セルの値が 次の値に等しい メロン でセルの塗りつぶしを黒,文字色を白に。
お礼
回答ありがとうございました。 お察しの通り、現在の自分の力量に見合わない質問です。 確かに回答者全依存の聞き方ですね。 わかってはいたのですが、ご指摘いただいてちょっとお恥ずかしいです。 それでもこうして一例を挙げていただいたことに感謝もしております。 おかげさまでいただいた全ての回答を参考に、目的の物を作ることができました。 入門の私には回答(コード)の中身を一つ一つ紐解いていく作業も勉強になりますよ。 ただ次回があるなら、おっしゃる通り尋ねる範囲といいますか、 本当に身になるようにしたければ、質問の内容を考えた方がもっとよいとも感じています。 VBAに限らず色々と参考になるものがありました。 回答ありがとうございます。