Aktif Hücrenin Rengini Değiştir - Microsoft Excel


Seçili hücrenin rengini değiştiriyor. Seçim ortadan kalktığı zaman da hücrenin varsayılan renk biçimine getiriyor. Böylelikle seçili hücre renklenmiş oluyor.

Kod


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static EskiHucre As Range

    On Error Resume Next
    
    If Target.Interior.ColorIndex = -4142 Then
        Target.Interior.ColorIndex = 27
        EskiHucre.Interior.ColorIndex = xlColorIndexNone
        Set EskiHucre = Target
    Else
        EskiHucre.Interior.ColorIndex = xlColorIndexNone
    End If
End Sub

Kod (Açıklamalı)


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    '--------------------------------------------------
    'Bir sonraki seçimi yaptığımız anda eski hücrenin
    'varsayılan haline gelmesini istiyoruz. Bunun için de
    'hangi hücreyi seçtiğimizi bilmemiz gerekiyor. Static
    'bir değişkenle eski hücre bilgisini tutuyoruz.
    '
    'Static değişken özetle şu işe yarıyor. Normalde Sub
    'yordam her çalıştığında istisna durumlar dışında
    'değişkenlere de bir nevi sıfırdan atama yapılıyor.
    'Static değişken bu noktada işimize yarıyor.
    'Değişkene atanan değeri kaybetmiyoruz ve böylelikle
    'metod yeniden çalıştığında değişkene son atanan
    'değerden devam edebiliyoruz.
    '--------------------------------------------------
    Static EskiHucre As Range
    
    '--------------------------------------------------
    'Eğer bir hata olursa bir sonraki satırdan devam et.
    '--------------------------------------------------
    On Error Resume Next
    
    '--------------------------------------------------
    'Eğer renk indeksinin değeri -4142 ise (bu değer
    'xlColorIndexNone sayı karşılığı) işlem yap.
    '--------------------------------------------------
    If Target.Interior.ColorIndex = -4142 Then
        
        '--------------------------------------------------
        'Seçili hücrenin rengi sarı olsun.
        '--------------------------------------------------
        Target.Interior.ColorIndex = 27
        
        '--------------------------------------------------
        'Bir önceki seçilen hücreyi varsayılan
        'renk biçimine döndür.
        '--------------------------------------------------
        EskiHucre.Interior.ColorIndex = xlColorIndexNone
        
        '--------------------------------------------------
        'Seçilen hücreyi EskiHucre değişkenine
        'aktar. Böylelikle yeni bir seçim olduğunda
        'bu hücre otomatik olarak eski seçilen
        'hücre olacak ve bu hücre için işlem
        'yapabileceğiz.
        '--------------------------------------------------
        Set EskiHucre = Target
        
    Else
    
        '--------------------------------------------------
        'Eğer seçilen hücrenin renk indeksi
        'xlColorIndexNone değilse en son
        'seçilen hücre için renk değişimi
        'yapılmıyor ama eski hücrede böyle
        'bir durum varsa renk indeksini
        'varsayılan biçimine getiriyoruz.
        '--------------------------------------------------
        EskiHucre.Interior.ColorIndex = xlColorIndexNone
    End If
End Sub

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