Belirlediğimiz alanlar için çift tıklamayla “x” karakteri ekleyebileceğimiz ve yine çift tıklamayla “x” karakterini kaldırabileceğimiz alternatif bir makro kodudur.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim kontrol_alani As Range
Set kontrol_alani = Range("B1:B100,D1:D50,F10:F60")
If Intersect(Target, kontrol_alani) Is Nothing Then Exit Sub
Application.EnableEvents = False
Cancel = True
If Target.Value = "x" Then
Target.Value = ""
Else
Target.Value = "x"
End If
Application.EnableEvents = True
Set kontrol_alani = Nothing
End Sub
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'--------------------------------------------------
'Çift tıklamayla işaret eklenecek veya işaretin
'kaldırılacağı alanı ya da alanları bir değişkene
'aktaracağız ve bunun üzerinden hareket edeceğiz.
'Bunun için değişken oluşturduk.
'--------------------------------------------------
Dim kontrol_alani As Range
'--------------------------------------------------
'İlgili alanları virgülle ayırarak belirttik.
'--------------------------------------------------
Set kontrol_alani = Range("B1:B100,D1:D50,F10:F60")
'--------------------------------------------------
'Eğer sayfadaki Target (yani bizim o anda üzerinde çalıştığımız alan)
'bizim kontrol_alani değişkeninde belirlediğimiz alanla ya da alan
'grubuyle kesişmiyorsa yordamdan çık.
'--------------------------------------------------
If Intersect(Target, kontrol_alani) Is Nothing Then Exit Sub
'--------------------------------------------------
'Şu anda Worksheet_BeforeDoubleClick olayı (event)
'üzerinde çalışıyoruz. Bunun gibi başka bir olay
'ya da olaylar da bir şekilde tetiklenebilir.
'Örneğin çift tıklama yaptığımızda aslında ilk
'tıklamanın tek tıklama olması gibi.
'
'İşte bunun gibi olası tetiklenmelerin olmasını
'istemiyorsak veya istenmeyen sonuçların meydana
'gelmesini istemiyorsak diğer olayların olmasını
'engelleyebiliriz.
'
'Kabaca özetlemeye çalışırsak bu kod bu işe yarıyor.
'--------------------------------------------------
Application.EnableEvents = False
'--------------------------------------------------
'BeforeDoubleClick olayının ikinci
'parametresi için işlem yaptık.
'Eğer Target alan ile hedeflenen
'alan kesişmiyorsa, bir çift tıklama
'işlemi olduğunda BeforeDoubleClick
'olayı ile gerçekleşecek işlemleri
'iptal etmeye yarıyor.
'--------------------------------------------------
Cancel = True
'--------------------------------------------------
'Eğer Target ile hedeflenen alan kesişiyorsa
'işaretlemeyi yapabiliriz. Eğer işaret yoksa
'eklenecek, varsa da kaldırılacak.
'--------------------------------------------------
If Target.Value = "x" Then
Target.Value = ""
Else
Target.Value = "x"
End If
'--------------------------------------------------
'(Varsa) diğer olayların yine çalışabilmesi
'için yukarıda False olarak değiştirdiğimiz
'EnableEvents durumunu True olarak geri
'değiştiriyoruz.
'--------------------------------------------------
Application.EnableEvents = True
'--------------------------------------------------
'Değişkenle işimiz bittiğinden dolayı
'bunu artık sıfırlıyoruz ve RAM'de
'boşu boşuna yer kaplamamasını
'sağlıyoruz.
'--------------------------------------------------
Set kontrol_alani = Nothing
End Sub