Genel Bakış
BackColor (Arka Plan Rengi), UserForm ve onun üzerindeki denetimlerin (TextBox, Label, CommandButton, Frame vb.) arka plan rengini okuyan ya da değiştiren özelliktir. Renk, Long türünde bir sayıyla ifade edilir; bu sayı genellikle RGB işleviyle, bir renk sabitiyle ya da onaltılık (hex) değerle verilir. Hücre dolgusu için kullanılan Interior.Color ile aynı sayı düzenini kullanır.
Hücreler için BackColor yoktur; hücre dolgusu Range.Interior.Color özelliğiyle ayarlanır. Label ve TextBox gibi denetimlerde BackStyle özelliği fmBackStyleTransparent (0) ise arka plan şeffaf olur ve BackColor görünmez; fmBackStyleOpaque (1) ise renk görünür.
Kırmızı için kod 255, koyu yeşil için 32768, mavi için 16711680, beyaz için 16777215 olarak yazıldı. Mavi bileşenin 65536 ile çarpılması nedeniyle saf mavi, saf kırmızıdan çok daha büyük bir sayıya karşılık gelir. Bu sayıların her biri bir denetimin BackColor özelliğine doğrudan atanabilir.
Makro çalıştığında form açılır: form zemini açık mavi, etiket açık sarı, giriş kutusu beyaz görünür; düğme ise Windows temasının düğme rengini alır. Form açıldığı için bu örnek burada çalıştırılmamıştır; kodu kendi çalışma kitabınızda deneyin.
Turuncu rengin bileşenleri 255, 165 ve 0 olarak bulundu. Mor için kırmızı bileşen 128, mavi bileşen 128 değerindedir. Bu yöntem, bir denetimin BackColor değerini okuyup rengi koyulaştırmak ya da açmak gibi işlemlerde işe yarar; bileşenleri değiştirdikten sonra RGB işleviyle yeniden birleştirebilirsiniz.
Söz dizimi
Özellik hem okunabilir hem yazılabilir:
VBA
2 satır
nesne.BackColor = renk
degisken = nesne.BackColor
- nesne: BackColor özelliği olan bir UserForm ya da denetim (ör. UserForm1, TextBox1, Label1). Zorunludur.
- renk: Long türünde renk değeri; RGB(kırmızı, yeşil, mavi) sonucu, vbRed gibi bir sabit ya da &H00FF0000& gibi bir hex değer olabilir. Özelliği okurken de aynı türde sayı döner.
- Varsayılan: UserForm, Label, CommandButton ve Frame için &H8000000F& (düğme yüzü rengi), TextBox, ComboBox ve ListBox için &H80000005& (pencere arka planı) değeridir.
Renk değerleri ve sabitler
Renk değeri, mavi, yeşil ve kırmızı bileşenlerinin bu sırayla birleşmesinden oluşan bir sayıdır: değer = kırmızı + yeşil x 256 + mavi x 65536. Bu nedenle onaltılık yazımda sıra &H00BBGGRR& biçimindedir; yani kırmızı en sağdadır. Sık kullanılan değerler:- RGB(r, g, b): Her bileşen 0-255 arasındadır; en okunaklı ve güvenli yöntemdir.
- vbBlack (0), vbRed (255), vbGreen (65280), vbYellow (65535), vbBlue (16711680), vbMagenta (16711935), vbCyan (16776960), vbWhite (16777215): Hazır renk sabitleridir.
- Sistem renkleri: &H8000000F& düğme yüzü, &H80000005& pencere arka planı gibi değerler Windows renk düzenine bağlıdır; kullanıcının temasına göre değişir.
Hangi nesnelerde kullanılır
BackColor, MSForms kitaplığındaki nesnelerde bulunur: UserForm, Frame, MultiPage, Label, TextBox, ComboBox, ListBox, CommandButton, ToggleButton, CheckBox, OptionButton ve ScrollBar gibi. Çalışma sayfasına yerleştirilen ActiveX denetimlerinde de aynı özellik vardır; örneğin sayfa modülünde TextBox1.BackColor ya da başka yerden OLEObjects("TextBox1").Object.BackColor biçiminde erişilir.Hücreler için BackColor yoktur; hücre dolgusu Range.Interior.Color özelliğiyle ayarlanır. Label ve TextBox gibi denetimlerde BackStyle özelliği fmBackStyleTransparent (0) ise arka plan şeffaf olur ve BackColor görünmez; fmBackStyleOpaque (1) ise renk görünür.
1. RGB değerlerini renk koduna çevirme
Sayfada her rengin kırmızı, yeşil ve mavi bileşenleri yazılıdır. Aşağıdaki kodu standart bir modüle yapıştırın; makro RGB işleviyle BackColor özelliğinin kabul ettiği Long değerini E sütununa yazar ve aynı değeri hücre dolgusu olarak da uygular.
VBA
11 satır
Option Explicit
Sub RenkKodlariniYaz()
Dim satir As Long
For satir = 2 To 7
' RGB işlevi BackColor özelliğinin kabul ettiği Long değerini üretir
Cells(satir, 5).Value = RGB(Cells(satir, 2).Value, Cells(satir, 3).Value, Cells(satir, 4).Value)
' Aynı sayı hücre dolgusunda Interior.Color ile de kullanılır
Cells(satir, 5).Interior.Color = Cells(satir, 5).Value
Next satir
End Sub
BackColor
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Renk Adı | R | G | B | Renk Kodu |
| 2 | Kırmızı | 255 | 0 | 0 | 255 |
| 3 | Yeşil | 0 | 128 | 0 | 32768 |
| 4 | Mavi | 0 | 0 | 255 | 16711680 |
| 5 | Sarı | 255 | 255 | 0 | 65535 |
| 6 | Gri | 192 | 192 | 192 | 12632256 |
| 7 | Beyaz | 255 | 255 | 255 | 16777215 |
Renk KodlarıExcelDepo v1.0.0
2. UserForm ve denetimlerin rengini ayarlama
Bu örnekte UserForm1 adlı bir form olduğunu ve üzerinde TextBox1, Label1 ve CommandButton1 denetimlerinin bulunduğunu varsayın. Kodu standart bir modüle yapıştırın; form açılmadan önce BackColor özellikleri atanır. Örnek form açtığı için burada çalıştırılmaz; tabloda atanan renkler özetlenmiştir.
VBA
16 satır
Option Explicit
Sub FormuRenklendirVeAc()
With UserForm1
' Formun kendi arka planı
.BackColor = RGB(230, 240, 250)
' Giriş kutusu beyaz kalsın
.TextBox1.BackColor = vbWhite
' Etiketin rengi görünsün diye BackStyle opak olmalıdır
.Label1.BackStyle = fmBackStyleOpaque
.Label1.BackColor = RGB(255, 242, 204)
' Düğmeyi sistem düğme yüzü rengine döndürür
.CommandButton1.BackColor = &H8000000F&
.Show
End With
End Sub
BackColor
Formülünü incelemek için bir hücre seçin.| A | B | C | |
|---|---|---|---|
| 1 | Nesne | Atanan renk | Tür |
| 2 | UserForm1 | RGB(230, 240, 250) | Açık mavi |
| 3 | TextBox1 | vbWhite | Sabit |
| 4 | Label1 | RGB(255, 242, 204) | Açık sarı |
| 5 | CommandButton1 | &H8000000F& | Sistem rengi |
Form RenkleriExcelDepo v1.0.0
3. BackColor değerini R, G, B bileşenlerine ayırma
Bir denetimin BackColor özelliğinden okuduğunuz sayıyı bileşenlerine ayırmak isteyebilirsiniz. Sayfada B sütununda renk değerleri vardır. Kodu standart bir modüle yapıştırın; makro kırmızı, yeşil ve mavi bileşenleri C, D ve E sütunlarına yazar.
VBA
15 satır
Option Explicit
Sub BilesenleriAyir()
Dim satir As Long
Dim renk As Long
For satir = 2 To 6
renk = Cells(satir, 2).Value
' Kırmızı: en düşük 8 bit
Cells(satir, 3).Value = renk Mod 256
' Yeşil: ortadaki 8 bit
Cells(satir, 4).Value = (renk \ 256) Mod 256
' Mavi: en yüksek 8 bit
Cells(satir, 5).Value = renk \ 65536
Next satir
End Sub
BackColor
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Renk Adı | BackColor Değeri | R | G | B |
| 2 | Turuncu | 42495 | 255 | 165 | 0 |
| 3 | Koyu mavi | 8388608 | 0 | 0 | 128 |
| 4 | Mor | 8388736 | 128 | 0 | 128 |
| 5 | Açık mavi | 15128749 | 173 | 216 | 230 |
| 6 | Koyu yeşil | 32768 | 0 | 128 | 0 |
Renk ÇözümlemeExcelDepo v1.0.0
Kullanırken dikkat edin
- Hücre için BackColor yoktur: Bir hücrenin arka planını boyamak için Range.Interior.Color kullanılır. BackColor yalnızca UserForm ve ActiveX/MSForms denetimlerinde bulunur; hücreye BackColor yazmak çalışma zamanı hatası verir.
- Renk sırası BGR'dir: Hex değer yazarken sıra &H00BBGGRR& şeklindedir. &HFF0000& kırmızı değil maviyi verir. Karışıklık yaşamamak için mümkün olduğunca RGB işlevini kullanın.
- Label ve TextBox'ta BackStyle: BackStyle özelliği şeffaf (fmBackStyleTransparent) ise BackColor atamanız görünür bir değişiklik yapmaz. Rengin görünmesi için BackStyle'ı opak yapın.
- Sistem renkleri kullanıcıya göre değişir: &H8000000F& gibi 8 ile başlayan değerler sabit bir renk değil, Windows renk şeması kalemleridir. Her kullanıcıda aynı rengi istiyorsanız RGB ile kesin bir değer verin.
- Okunabilirlik: Arka plan rengini değiştirdiğinizde ForeColor (yazı rengi) ile yeterli karşıtlık olduğundan emin olun. Koyu zeminde koyu yazı okunmaz.
- İlgili konular: ForeColor, BorderColor, BackStyle, Interior.Color, ColorIndex, RGB işlevi, UserForm, Label, TextBox, Koşullu Biçimlendirme, OLEObjects.