Belirlenen Alanlarda Çift Tıklamayla İşaret Koy Veya Kaldır - Microsoft Excel


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.

Kod


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

Kod (Açıklamalı)


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

Yararlanılan Kaynaklar
Etiketler
microsoft excel açıklamalı içerik microsoft excel vba