プロが教えるわが家の防犯対策術!

マクロ Wクリックた時に文字列及び色付け
いつもお世話になります。

OSは、win10 エクセルは、office365 です。

セルをWクリックする毎に、
 
 1 ○   オレンジ
 2 ●   淡いブルー
 3 空白  なし
 という具合に変化させたい。

下記コードでは、上記の2と3のみ反応します。
 どこのコードを修正すればいいかご指導いただけませんか。

参考

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rng As Range
Set rng = Range("A1").CurrentRegion.Offset(1).Resize(Range("A1").CurrentRegion.Rows.Count - 1)
If Application.Intersect(ActiveCell, rng) Is Nothing Then
Exit Sub
End If
Dim rnyRange As Range
Set myRange = Intersect(Target, Range("D2:D21"))
If Not myRange Is Nothing Then
Select Case Target.Value
Case ""
Target.Value = "○"
Case "○"
Target.Value = "●"
Case Else
Target.ClearContents
End Select
Cancel = True
End If
If Target.Interior.ColorIndex = xlNone Then
Cells(Target.Row, 4).Value = "〇"
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.Color = RGB(255, 230, 153)
Cells(Target.Row, 4).Value = "●"
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.Color = RGB(204, 255, 255)
Else
Cells(Target.Row, 4).Value = ""
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.Color = xlNone
End If
End Sub

「マクロ Wクリックた時に文字列及び色付け」の質問画像

質問者からの補足コメント

  • うーん・・・

    白丸でなく黒丸のことですよね
    必要に応じてクリクします
    数に限りありません

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/07/20 08:35

A 回答 (3件)

こんにちは



なんだか、誰かが変なコードを付け足したみたいに思われますけれど・・・?
前半のコードだけなら、ちゃんと3種類の順番で動作すると思います。
後半のIF文以下で、妙な書き換えを行っている。

>どこのコードを修正すればいいかご指導いただけませんか。
後半のIF以下を削除して、Select Case文の中で色付け処理も行えばよいのでは?
(↑削除しないと、おかしな挙動はそのまま残ります)

Select Case Target.Value
Case ""
 Target.Value = "○"
 Cells(Target.Row, 1).Resize(, 4).Interior.Color = RGB(255, 230, 153)

Case "○"
 Target.Value = "●"
 Cells(Target.Row, 1).Resize(, 4).Interior.Color = RGB(204, 255, 255)

Case Else
 Target.ClearContents
 Cells(Target.Row, 1).Resize(, 4).Interior.Color = xlNone
End Select


あるいは、繰り返しが多いので、Case文の中では、
 ColorVal = RGB(255, 230, 153)
のように色だけ設定しておいて、抜けたところでまとめて
 Cells(Target.Row, 1).Resize(, 4).Interior.Color = ColorVal
としておいても宜しいかと。
    • good
    • 0
この回答へのお礼

早速のご指導をありがとうございました。
うまくできました。

なにせまだまだのものです。

お礼日時:2021/07/20 09:38

今、PCで見た。



Select Case Target.Value
Case ""
 Target.Value = "○"
 Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.Color = RGB(255, 230, 153)
Case "○"
 Target.Value = "●"
 Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.Color = RGB(204, 255, 255)
Case Else
 Target.ClearContents
 Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.Color = xlNone
End Select

試してないけど、上記でいけると思う。
    • good
    • 0
この回答へのお礼

早速のご指導をありがとうございました。

お礼日時:2021/07/20 09:39

なんで、白丸つけるコードが二箇所にあんの?


あと、白丸が付けられるなら正しく判定されてるわけだから、その判定を使って色つければいい。

ステップ実行した方がいいし、
コードも、もう一度見直した方がいい。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!