VBAで丸をつけたいです。
VBAかなりの初心者です。
先日、画像に添付したように、あらかじめテキストが入力されているセルを、ダブルクリックすると丸が付いたり消えたりするプログラムを教えてもらいました。
これはこれで使う機会があるので活用させてもらっているのですが。
できれば、ダブルクリックではなく、シングルクリックで丸が付いたり消えたりしたいのですが、できるでしょうか?
丸を付けたり消したりするセルには文字が入力されています。
丸をつけたり消したりしたいセルは時に結合されています。
丸をつけたり消したりしたいセルは連続していることもあれば、とびとびになっていることもあります。
前回教えて頂いたコードは以下のとおりです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Mark の複数の範囲のセル/結合セルに Wクリックで 赤○ つける/消す
Dim Ad As String
Dim Lp As Single, Tp As Single, Hp As Single
Dim Ov As Oval, Mark As Range
Set Mark = Range("A5:b7, d5:e7, g5:h7,A1:B3") '範囲の複数指定
If Intersect(Target, Mark) Is Nothing Then Exit Sub '範囲外は無視
With Target
Ad = .Address: Hp = .Height: Tp = .Top
If .Height > .Width Then Hp = .Width '縦長結合の場合に備える
Lp = .Left + ((.Width / 2) - (Hp / 2))
End With
Cancel = True
7
With ActiveSheet
.Unprotect '★
For Each Ov In .Ovals
If Not (Intersect(Target, Ov.TopLeftCell) Is Nothing) Then '既存○検出
Ov.Delete: Ad = "": ' Exit For '◎重複があるなら外し、削除優先する
End If
Next
If Ad <> "" Then
With .Ovals.Add(Lp, Tp, Hp, Hp)
.Interior.ColorIndex = xlColorIndexNone
.Border.Color = vbRed ' 赤○にする
End With
End If
Protect , True, False, False '★
End With
End Sub
補足
ありがとうございます。 フィルドラッグコピーすると実行エラーになりましたので No2の方の回答をあわせ、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Or Target.Address(False, False) <> "A1" Then Exit Sub If Target.Value = 1 Then With ActiveSheet.Range("B2") ActiveSheet.Shapes.AddShape(Type:=msoShapeHeart, _ Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select End With On Error Resume Next ActiveSheet.Shapes("MyHeart").Delete Selection.Name = "MyHeart" Else On Error Resume Next ActiveSheet.Shapes("MyHeart").Delete End If Range("A1").Select End Sub としましたが、これで正解でしょうか?