EXCEL VBA RENK İNDEKSİ NEDİR?
VBA COLOR INDEX, her sayıya önceden atanmış rengi almak için sayısal sayılarla kullanılan özelliktir. 1'den 56'ya kadar bir sayı dizini atayabiliriz ve bu sayıların her biri farklı renkleri temsil eder.
Ayrıca, Renk ve Renk Endeksi özelliklerini kullanarak renkleri uygulayabiliriz. Ancak, bu ikisi arasında bir fark vardır ve bunu birazdan tartışacağız.
Aşağıdaki resim her sayının karşılık geldiği rengi göstermektedir.

ÖNEMLİ NOKTALAR
- VBA Renk İndeksi, önceden atanmış rengi elde etmek için sayısal sayılarla kullanılır.
- VBA Renk İndeksinde vbRed, vbBlack, vbWhite, vbGreen, vbMagenta, vbCyan, vbBlue, vbYellow gibi 8 tip sabit renk vardır
- Kırmızı, Yeşil ve Mavi renklerinin karışımından oluşan kendi rengimizi oluşturmak için RGB fonksiyonunu kullanabiliriz.
- Ayrıca COLOR veya COLOR INDX özelliğini “xlNone” olarak ayarlayarak hücrenin rengini kaldırabiliriz.
- Seçim aralığını değişkene ayarlayıp, kullanıcının rengi kaldırmak için butona tıklamasına izin vererek renk temizleme işlemini dinamik hale getirebiliriz.
Excel VBA Renk İndeksinin Sözdizimi
VBA Renk Endeksi özelliğinin sözdizimi aşağıdadır:
Range(“Gereken Aralık”).Interior.ColorIndex = (1 ile 56 arasında herhangi bir sayı)
Sözdizimi garip görünebilir, ancak Renk Endeksi özelliğini anlamanın en iyi yolu budur.
Range(“Gerekli Aralık [Required Range]”): Renk biçimlendirmesini uygulamak için hangi hücreleri biçimlendireceğimize karar vermeliyiz. Bu nedenle, hücre adreslerini çift tırnak işareti içinde içeren aralık özelliğini sağlamak ilk gerekliliktir.
Örneğin A1 ile A10 aralığını aşağıdaki gibi seçiyoruz.

İç: VBA RANGE özelliği kullanılarak aralık seçildikten sonra , seçilen aralıkla ne yapmamız gerektiğine karar vermemiz gerekir. Dolayısıyla, hücrenin rengini değiştireceğimiz için RANGE özelliğinin “İç [Interior]” özelliğini seçmemiz gerekir .
Aralık özelliği parantezinden sonra nokta (.) girerek aralığın İç özelliğini seçebiliriz.

Renk İndeksi: İç kısım seçildikten sonra hücrenin rengini değiştireceğimiz için renk indeksi özelliğine karar vermemiz gerekiyor.

1'den 56'ya Kadar Herhangi Bir Sayı: Renk endeksi özelliği seçildikten sonra, eşittir işaretini girerek 1 ile 56 arasında endeks numarasını ayarlamamız gerekir. Bir sayı atamak için, hangi endeks numarasının hangi rengi tuttuğunu bilmemiz gerekir.
Renk ve Renk İndeksi Özelliği Nasıl Kullanılır ?
Daha önce de söylediğimiz gibi hücrenin rengini iki şekilde ayarlayabiliriz; COLOR özelliğini ve VBA COLOR INDEX özelliğini kullanarak.
1 – Renk Özelliğini Kullanma
COLOR özelliğini kullanmanın sözdizimi, bu yazıda daha önce ele aldığımız COLOR INDEX özelliğine benzer. Ancak, COLOR özelliğiyle herhangi bir dizin numarası kullanmayacağız, bunun yerine VBA'nın yerleşik renklerini kullanacağız.
8 adet yerleşik VBA rengimiz var. Bunlar:
- vbRed
- vbBlack
- vbWhite
- vbGreen
- vbMagenta
- vbCyan
- vbBlue
- vbYellow
Yukarıdaki renkleri kullanarak aşağıdaki renkleri elde edeceğiz.

Sub Example1()
Range(“A1”).Interior.Color= vbGreen
End Sub
Aşağıdaki kod A1 hücresinin arka plan rengini maviye değiştirecektir.
Yukarıdaki kodu kopyalayıp Visual Basic Editor penceresine yapıştırın .

Bu kodu Visual Basic Editor penceresinde çalıştır düğmesine basarak çalıştırın veya F5 kısayol tuşunu kullanarak A1 hücresinin arka plan rengini Mavi olarak değiştirin.

COLOR özelliği altında mevcut 8 sabit renkten herhangi birini kullanabiliriz.
Rengi Değiştirmek İçin RGB Fonksiyonu: 8 sabit yerleşik rengi kullanmak yerine, RGB fonksiyonunu kullanarak rengi ihtiyacımıza göre herhangi bir renge değiştirebiliriz.
Aşağıda VBA'da RGB fonksiyonunun sözdizimi yer almaktadır.
RGB(Red As Integer, Green As Integer, Blue As Integer)
KIRMIZI, YEŞİL ve MAVİ renklerinin karışımından kendi rengimizi yaratabiliriz.
Her renk tam sayı kabul ettiğinden KIRMIZI Endeks numarası, YEŞİL Endeks numarası ve MAVİ Endeks numarasını bilmek gerekir.
Örneğin A1 hücresine sadece kırmızı renk arka plan uygulamak istiyorsak RGB fonksiyonunun RED argümanına 250 vermemiz, diğer renklerin 0 olması gerekiyor.
Sub Color_Example1()
Range(“A1”).Interior.Color = RGB(250, 0, 0)
End Sub
Sadece Kırmızı Rengi Uygulamak İçin
Bu, A1 hücresinin arka plan rengini Kırmızı olarak değiştirecektir.

Aynı şekilde Yeşil ve Mavi renkleri de kullanabiliriz.
Sadece Yeşil Rengi Uygulamak İçin
Sub Color_Example1()
Range(“A1”).Interior.Color = RGB(0, 250, 0)
End Sub
Sadece Mavi Rengi Uygulamak İçin
Sub Color_Example1()
Range(“A1”).Interior.Color = RGB(0, 0, 250)
End Sub
Diğer renkleri test etmek için, hangi rengi uyguladığını görmek için herhangi bir sayı kombinasyonu verebiliriz. Örneğin, aşağıdaki kodda, sırasıyla Kırmızı için 200, Yeşil için 300 ve Mavi için 400 argümanları verdik.
Sub Color_Example1()
Range(“A1”).Interior.Color = RGB(200, 300, 400)
End Sub
Bu kodu çalıştırdığımızda A1 hücresinde aşağıdaki arka plan rengini elde edeceğiz.

2 – Renk Endeksi Özelliğini Kullanma
COLOR özelliğini kullanmak yerine COLOR INDEX özelliğini de kullanabiliriz. Ancak, VBA COLOR INDEX özelliği çok sınırlı renklere sahiptir.
Sadece 1'den 56'ya kadar indeks numarası verebiliriz.
Örneğin A1 hücresinin arkaplan rengini Safran olarak değiştirmek istiyorsak COLOR INDEX numarasını 46 olarak kullanmamız gerekmektedir.
Sub Color_Example1()
Range(“A1”).Interior.ColorIndex = 46
End Sub
Bu, A1 hücresinin arka plan rengini aşağıdaki gibi Safran'a değiştirecektir.

Bunun için VBA'da COLOR INDEX özelliğini kullandığımızda 1 ile 56 arasında herhangi bir sayıyı kullanabiliriz.
Örnekler
Örnek 1 – COLOR Özelliğini Kullanarak Yazı Tipi Rengini Değiştirme
VBA COLOR Index özelliği yazı tipi rengini değiştirmek için de kullanılabilir. Örneğin, A1 hücresindeki şu değere bakın.

A1 hücresinin arka plan rengini Yeşil ve yazı rengini Beyaz olarak değiştirmemiz gerektiğini varsayalım. COLOR özelliğini kullanmadan önce aşağıdaki iki özelliği kullanmamız gerekir.
- İç mekan (Interior): Arka plan rengini değiştirmek için.
- Yazı Tipi (Font): Yazı tipi rengini değiştirmek için.
Aşağıdaki kod arka plan rengini Yeşil'e, yazı rengini ise Beyaz'a değiştirecektir.
Sub Example1()
Range(“A1”).Interior.Color = vbGreen
Range(“A1”).Font.Color = vbWhite
End Sub
Aşağıdaki sonucu almak için bu kodu F5 tuşuna basarak çalıştırın.

Örnek 2 – Renk Endeksi Numaralarının Tüm Renklerini Listeleyin
VBA COLOR INDEX sayılarını kullanırken 1'den 56'ya kadar dizin sayıları verebiliriz. Ancak hangi sayının hangi rengi tuttuğunu hatırlayamayız. Hayatımızı kolaylaştırmak için, sayıları ve tuttukları renkleri listeleyen aşağıdakilere sahibiz.
Sub Example2()
Dim R As Integer
Dim C As Integer
Dim ColorNumber As Integer
ColorNumber = 1
For R = 1 To 8
For C = 1 To 7
Cells(R, C).Interior.ColorIndex = ColorNumber
ColorNumber = ColorNumber + 1
Next C
Next REnd Sub
Bu kodu çalıştırdığımızda aşağıdaki renk matrisini elde edeceğiz.

Yukarıdaki renk tablosuna bakarak ihtiyacımız olan renge göre renk indeks numarasını uygulayabiliriz.
Kopyaları Buldunuz mu?
Şimdiye kadar öğrendiğimiz gibi, Renk Endeksi özelliği 1'den 56'ya kadar tam sayı alır ve 56 farklı renk verir. Ancak, yukarıdaki renk matrisini incelersek, birçok yinelenen değere sahibiz.
COLOR INDEX özelliğine sahip 10 adet yinelenen renk var. Resim, yinelenen renkleri ve bunlarla ilişkili sayıları gösteriyor. Genel olarak, Color Index özelliği numaralarına sahip yalnızca 46 adet benzersiz rengimiz var.

Excel VBA'da Renkleri Temizle
Renk hücrelere arka plan rengi olarak uygulandığında, bazen bunları kaldırmamız gerekebilir. Bu nedenle, rengin hücrelerden nasıl kaldırılacağını anlamak önemlidir.
Renk indeks numarasını veya VBA sabit renklerini kullanmak yerine, renkleri kaldırmak için xlNone özelliğini kullanmamız gerekiyor .
Sub Remove_Color()
Range(“A1”).Interior.ColorIndex = xlNone
End Sub
Örneğin aşağıdaki koda bakın.
A1 hücresinde aşağıdaki renk arka planımız var.

Yukarıdaki kodu çalıştırdığımızda, A1 hücresinin renk indeksi özelliği none olarak ayarlanacaktır, yani A1 hücresinin arka plan rengi kaldırılacaktır.

Yukarıdaki kod yalnızca A1 hücresinden rengi kaldıracaktır. Ancak, kodu daha dinamik hale getirmemiz gerekiyor, yani kullanıcılar rengi kaldırmak istedikleri hücre aralığını seçecek ve seçilen hücre aralığından rengi kaldırmak için düğmeye tıklayacak.
Aralığı Dinamik Hale Getirin
Aşağıdaki koda bakın.
Sub Remove_Color()
Dim Rng As Range
Set Rng = Selection
Rng.Interior.Color = xlNoneEnd Sub
Öncelikle kodu kopyalayıp Visual Basic Editor penceresine yapıştıralım .

Daha sonra çalışma sayfasına dikdörtgen şeklindeki bir düğme ekleyin .

Bu şekli çalışma kağıdına yerleştirin.

Arka plan rengini kaldırmak için buraya tıklayın şeklinde metni girin .

Şekle sağ tıklayın ve Makro Ata seçeneğini seçin.

Remove_Color makro adını seçin .

Daha sonra Tamam'a tıklayın ve Remove_Color makrosu bu şekle atanacaktır.
Şimdi, arka plan rengini kaldırmamız gereken hücre aralığını seçin. Örneğin, A1:A8 aralığındaki hücre aralığını seçtik.

Hedeflenen aralığı seçtikten sonra makronun atandığı butona tıklayın.

İşte, makronun atandığı butona tıkladığımız anda seçili aralığın arka plan rengi kaldırılmış oluyor.
Bu şekilde bu buton aracılığıyla makroyu seçip çalıştırarak VBA'da arka plan rengini kaldırabiliriz.
Dikkat Edilmesi Gereken Önemli Noktalar
- Renk ve Renk İndeksi VBA'daki özelliklerdir.
- VBA renk indeksini ve renk özelliklerini uygulayabilmek için öncelikle hücre aralığını veya hedeflenen hücre aralığını belirtmemiz gerekmektedir.
- VBA renk indeksi özelliği için yalnızca 1'den 56'ya kadar indeks numaraları verebiliriz. Eğer sayı bu aralıkta değilse, o zaman dizin aralık dışı hatası alırız .
- 1'den 56'ya kadar, renk indeksi özelliğini kullandığımızda ortaya çıkan 10 adet yinelenen renk vardır.
- RGB fonksiyonu 3 argüman alır ve bu argümanların hepsi zorunludur. Giriş olarak sadece tam sayı verebiliriz.
8 sabit VBA renginin ötesinde herhangi bir rengi uygulamak için, 1'den 56'ya kadar tam sayı vererek istenilen rengi elde edebiliriz. Ancak rengi tutan sayının farkında olmak gerekir.
Renk kodu indeksini almak için aşağıdaki kodu kullanın. Unutmayın, hücrelerde tüm 56 rengi depolayacaktır.
Sub Color_Code_Index()
Dim R As Integer
Dim C As Integer
Dim ColorNumber As Integer
ColorNumber = 1
For R = 1 To 8
For C = 1 To 7
Cells(R,C).Value = ColorNumber
Cells(R, C).Interior.ColorIndex = ColorNumber
ColorNumber = ColorNumber + 1
Next C
Next R
End Sub
VBA Renk İndeksi sadece 1 ile 56 arasındaki değerleri alır. İndeks numarasını bu aralığın dışında verdiğinizde, dizin aralık dışı hatası alırız.
Aşağıdaki kodu kullanarak hücrelerdeki renk ve indeks numaralarını alacağız.
Sub Color_Code_Index()
Dim R As Integer
Dim C As Integer
Dim ColorNumber As Integer
ColorNumber = 1
For R = 1 To 8
For C = 1 To 7
Cells(R,C).Value = ColorNumber
Cells(R, C).Interior.ColorIndex = ColorNumber
ColorNumber = ColorNumber + 1
Next C
Next R
End Sub
Bu kodu çalıştırdığımızda aşağıdaki renk matrisini elde edeceğiz.
