Geçerli Bölgede Tüm Satırı ve Tüm Sütunu Renklendir - Microsoft Excel


Örneğin boş bir alanda bir renk değişimi olmazken bir tabloya ait hücre seçildiğinde, o tablodaki hücreye ait satır ve sütunun arka plan rengi değişiyor. Ana olay bu, yani renklendirme bir bölge ile sınırlı kalıyor. Eğer birden fazla hücre seçilmişse de çalışmıyor.

Ekran Görüntüsü

Kod


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Cells.Interior.ColorIndex = 0
    
    If IsEmpty(Target) Or Target.Cells.Count > 1 Then Exit Sub
    
    Application.ScreenUpdating = False
    
    With ActiveCell
        Range(Cells(.Row, .CurrentRegion.Column), _
        Cells(.Row, .CurrentRegion.Columns.Count + .CurrentRegion.Column - 1)). _
        Interior.ColorIndex = 8
        
        Range(Cells(.CurrentRegion.Row, .Column), _
        Cells(.CurrentRegion.Rows.Count + .CurrentRegion.Row - 1, .Column)). _
        Interior.ColorIndex = 8
    End With
    
    Application.ScreenUpdating = True
End Sub

Kod (Açıklamalı)


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    '--------------------------------------------------
    'Öncelikle sayfadaki arkaplan
    'renklerini komple bir temizleyelim.
    '--------------------------------------------------
    Cells.Interior.ColorIndex = 0
    
    '--------------------------------------------------
    'Eğer hücre boşsa ya da seçilen hücre
    'sayısı 1'den büyükse yordamdan çık.
    '--------------------------------------------------
    If IsEmpty(Target) Or Target.Cells.Count > 1 Then Exit Sub
    
    '--------------------------------------------------
    'Seçim değiştiğinde gerçekleşecek değişiklikler
    'kullanıcı tarafından görünmemesi için ekran
    'güncellemesini kapattık.
    '--------------------------------------------------
    Application.ScreenUpdating = False
    
    '--------------------------------------------------
    'Seçilen hücreyle ilgili bir şeyler yapacağız.
    '--------------------------------------------------
    With ActiveCell
        
        '--------------------------------------------------
        'Burada, karmaşık gibi görünse de,
        'şu şekilde bir kullanım var:
        '
        'Range(Cells(1, 1), Cells(3, 3))
        'Alternatif bir Range kullanımı.
        'Range("A1:C3") anlamına geliyor yukarıdaki örnek.
        'Böylelikle Cells kardeşimizin avantajlarını da
        'kullanabiliyoruz.
        '
        '.Row
        'Bizim seçili hücrenin exceldeki satır karşılığı.
        'Burada sütunlara işlem yapılacağından satır değeri
        'aynen eklenmiş.
        '
        '.CurrentRegion.Column
        'Bizim seçtiğimiz hücre normalde
        'Microsoft Excel'in hangi sütununda?
        '
        '.CurrentRegion.Columns.Count
        'Seçtiğimiz hücreye ait veri
        'grubunda toplam kaç sütun var?
        '
        'Örnek verecek olursak burada Range("E3:G3") alanını
        'seçmiş gibi olduk. Tek satırlık bir seçim söz konusu.
        '
        'İşte bunun arka plan rengini değiştirdik.
        '--------------------------------------------------
        Range(Cells(.Row, .CurrentRegion.Column), _
              Cells(.Row, .CurrentRegion.Columns.Count + .CurrentRegion.Column - 1)). _
              Interior.ColorIndex = 8
              
        '--------------------------------------------------
        '.Row
        'Bizim seçili hücrenin exceldeki sütun karşılığı.
        'Burada da satırlara işlem yapılacağından sütun
        'değeri aynen eklenmiş.
        '
        '.CurrentRegion.Row
        'Bizim seçtiğimiz hücre normalde
        'excel'in hangi satırında?
        '
        '.CurrentRegion.Columns.Count
        'Seçtiğimiz hücreye ait veri
        'grubunda toplam kaç satır var?
        '
        'Örnek verecek olursak burada Range("D10:D20")
        'alanını seçmiş gibi olduk. Tek sütunluk bir
        'seçim söz konusu. Artık sütundaki veri grubunda
        'kaç satır varsa ona göre çalışacak.
        '
        'İşte bunun arka plan rengini değiştirdik.
        '--------------------------------------------------
        Range(Cells(.CurrentRegion.Row, .Column), _
              Cells(.CurrentRegion.Rows.Count + .CurrentRegion.Row - 1, .Column)). _
              Interior.ColorIndex = 8
    End With
    
    '--------------------------------------------------
    'Güncellemeleri görebilmek için ekran
    'güncellemesini tekrardan eski hale getirdik.
    '--------------------------------------------------
    Application.ScreenUpdating = True
End Sub

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba