Este posibil să pictați fundalul într-o funcție vba. Culoarea celulei în Excel

Uneori devine necesar să se schimbe, să se determine culoarea celulei care urmează să fie copiată sau să picteze pe o anumită zonă, oferind astfel caracteristici unice și expresive tabelului de date.

În acest articol, vom analiza cum puteți schimba manual culoarea unei celule, precum și cum să schimbați culoarea unui interval de celule sau a unei celule selectate în VBA.

Să începem cu ceva simplu. Pe bara de instrumente principală a panglicii se află panoul Format Cells:

Pentru a schimba culoarea unei celule (gamă de celule), trebuie să o selectăm și apoi să selectăm culoarea necesară în Bara de instrumente. De asemenea, puteți seta alte culori selectându-le din paletă. Bara de instrumente modifică, de asemenea, culoarea textului, dimensiunea fontului și formatul marginii celulei.

Acum să setăm formatul celulei folosind meniul contextual, pentru care facem clic dreapta pe celulă și selectăm „Format Cells” în lista care se deschide:

În fila Umplere, puteți alege culoarea și modelul de fundal.

Să luăm în considerare o situație ușor diferită. Să presupunem că doriți să copiați culoarea (și formatul) celulei dintr-una existentă și să o aplicați celulelor dvs. Să folosim butonul de pe panoul principal „Format by sample” (“whisk”):

Astfel, pentru a copia formatul, trebuie să selectăm celula care ne interesează, să facem clic pe „muștă” și să facem clic pe celula al cărei format dorim să-l setăm.

Operațiuni similare pot fi descrise în Macro-uri. Dacă este necesar să se insereze o condiție în cod conform căreia formatul celulei se va schimba sau celulele vor fi însumate cu o anumită culoare sau font, apoi după copierea formatului și înregistrarea unei macrocomenzi, puteți vedea că:

Setați culoarea celulei (A1 este colorat în galben):

Sub Macro2() Range("A1").Selectați cu selecție.Interior .Culoare = 65535 End With End Sub

Copiați formatul celulei (formatul A1 este copiat în A3):

Sub Macro1() Range("A1").Select Selection.Copy Range("A3").Select Selection.PasteSpecial Application.CutCopyMode = False End Sub

Acum, combinând formatul cu operatori condiționali, puteți scrie calcule (de exemplu, însumare) pe baza condiției de culoare.

Vă vom fi recunoscători dacă faceți clic +1 și/sau imi placeîn partea de jos a acestui articol sau distribuie prietenilor tăi folosind butoanele de mai jos.

Umplerea unei celule cu culoare VBA Excel. Fundalul celulei. Proprietăți.Interior.Culoare și.Interior.ColorIndex. Culoare Model RGB. Paleta standard de 56 de culori. Constante predefinite.

Proprietatea.Interior.Color a obiectului Range

Începând cu Excel 2007, modalitatea principală de a umple o gamă sau o celulă individuală cu culoare (pictați, adăugați, schimbați fundalul) este utilizarea proprietății Interior.Color a obiectului Range, atribuindu-i o valoare de culoare ca număr zecimal de la 0. la 16777215 (16777216 culori în total).

Umplerea unei celule cu culoare în VBA Excel

Exemplul de cod 1:

Sub ColorTest1() Range("A1").Interior.Color = 31569 Range("A4:D8").Interior.Color = 4569325 Range("C12:D17").Cells(4).Interior.Color = 568569 Cells (3, 6).Interior.Color = 12659 End Sub

Plasați codul exemplu în dvs modul softwareși apăsați butonul de pe bara de instrumente „Run Sub” sau de pe tastatură „F5”, cursorul ar trebui să fie în interiorul programului care rulează. Pe foaia activă celule Excel iar intervalul selectat în cod va apărea în culorile corespunzătoare.

Există o nuanță interesantă: dacă este atribuit unei proprietăți .Interioare.Culoare valoare negativă de la -16777215 la -1, apoi culoarea va corespunde valorii, egal cu suma valoarea maximă a paletei (16777215) și valoarea negativă atribuită. De exemplu, umplerea tuturor celor trei celule după executarea următorului cod va fi aceeași:

Sub ColorTest11() Cells(1, 1).Interior.Color = -12207890 Cells(2, 1).Interior.Color = 16777215 + (-12207890) Cells(3, 1).Interior.Color = 4569325 End Sub

Testat în Excel 2016.

Afișarea mesajelor despre valorile numerice ale culorilor

Este imposibil să vă amintiți valorile numerice ale culorilor, așa că se pune adesea întrebarea cum să aflați valoarea numerică a fundalului unei celule. Următorul cod VBA Excel afișează mesaje despre valorile numerice ale culorilor atribuite anterior.

Exemplul de cod 2:

Sub ColorTest2() MsgBox Range("A1").Interior.Color MsgBox Range("A4:D8").Interior.Color MsgBox Range("C12:D17").Cells(4).Interior.Color MsgBox Cells(3) , 6).Interior.Color End Sub

În loc să afișați mesaje, puteți aloca valori numerice culorile variabilelor declarându-le ca Long.

Utilizarea constantelor predefinite

VBA Excel are constante predefinite pentru culorile de umplere a celulelor utilizate în mod obișnuit:

Culoarea este atribuită unei celule cu o constantă predefinită în VBA Excel în același mod ca și cu o valoare numerică:

Exemplul de cod 3:

Range("A1"). Interior.Color = vbGreen

Model de culoare RGB

Sistemul de culori RGB este o combinație de trei culori primare de intensitate diferită: roșu, verde și albastru. Ele pot lua valori de la 0 la 255. Dacă toate valorile sunt 0, este negru, dacă toate valorile sunt 255, este alb.

Puteți selecta o culoare și puteți afla valorile RGB folosind paleta Excel:

Înainte de a putea atribui o culoare unei celule sau unui interval folosind valori RGB, acestea trebuie convertite în număr zecimal, indicând culoarea. Există o funcție Excel VBA pentru aceasta, care se numește RGB.

Exemplul de cod 4:

Interval(„A1”). Interior.Color = RGB(100, 150, 200)

Property.Interior.ColorIndex al obiectului Range

La apariția Excelului 2007 a existat doar o paletă limitată pentru umplerea celulelor cu fundal, constând din 56 de culori, care s-a păstrat până în prezent. Fiecărei culori din această paletă i se atribuie un index de la 1 la 56. Puteți atribui o culoare unei celule după index sau puteți afișa un mesaj despre aceasta folosind proprietatea.Interior.ColorIndex:

Exemplul de cod 5:

Range("A1").Interior.ColorIndex = 8 MsgBox Range("A1").Interior.ColorIndex

Puteți vizualiza o paletă limitată pentru umplerea celulelor cu fundal rulând în VBA Excel este cel mai simplu macro:

Exemplul de cod 6:

Sub ColorIndex() Dim i As Byte For i = 1 To 56 Cells(i, 1).Interior.ColorIndex = i Next End Sub

Numerele de rând ale foii active de la 1 la 56 vor corespunde indexului de culoare, iar celula din prima coloană va fi umplută cu un fundal corespunzător indexului.

Puteți vedea paleta standard finită de 56 de culori.

Textual Sub Procedure_1() „Creați în RAM computer „zona denumită – matrice „myColor”. „Matricea este formată din trei rânduriși două coloane. „Dacă trebuie să cauți mai mult trei cuvinte , atunci trebuie să modificați „numărul de rânduri aici: nu trebuie să fie de la 1 la 3, ci de la 1 la 4.” Nu este necesar să se schimbe numărul de coloane. Dim myColor(1 To 3, 1 To 2) As String Dim rngSearch As Excel.Range Dim rngFind As Excel.Range, myAddress As String Dim i As Long "1. Plasați „myColor” în prima matrice textul coloanei, „care va fi căutat în celulele Excel. „În a doua coloană plasăm numărul culorii care trebuie „aplicată”. „Numărul culorii poate fi aflat astfel: „1) mergeți la Excel; „2) activați celula pentru care doriți să aflați culoarea; "3) accesați VBA; "4) Vizualizare - Fereastră imediată. Se va deschide o fereastră. În această fereastră, lipiți "acest cod și apăsați tasta "Enter". Se va obține numărul de culoare. "print activecell.Interior.Color" 5) Există și "ColorIndex".. În ajutorul VBA (Excel 2010), dacă „inserați textul „ColorIndex” în colțul din dreapta sus și apăsați tasta „Enter”, va apărea o listă de articole. „Selectați articolul „ColorIndex Property”. Afișează „ce culoare i se atribuie ce număr.„Am pus numerele între ghilimele pentru că am dat matricei tipul de date „Text”. myColor(1, 1) = „GR”: myColor(1, 2) = „5287936” myColor(2, 1) = „RD” : myColor(2, 2) = „255” myColor(3, 1) = „Y”: myColor(3, 2) = „65535” „2. Pentru comoditatea scrierii codului, dăm numele „rngSearch” intervalului de celule în care „trebuie să pictați peste celule. Prin acest nume vom accesa „gama dorită de celule.<>Set rngSearch = ActiveSheet.Range("A1:D25") "Folosind o buclă cu "i" ne uităm prin toate rândurile din tabloul "myColor". "UBound(myColor, 1) este numărul ordinal

ultima linie în matricea „myColor”. Pentru i = 1 To UBound(myColor, 1) Pasul 1 "3. Este mai rapid să căutați în loc să vizualizați fiecare celulă. "LookAt:=xlWhole - este căutată o potrivire completă.

Proprietatea.Interior.Color a obiectului Range

Setați rngFind = rngSearch.Find(What:=myColor(i, 1), LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) Dacă este găsită, celula care conține textul găsit primește numele „rngFind”. Și prin acest nume puteți accesa celula.

Umplerea unei celule cu culoare în VBA Excel

Exemplul de cod 1:

„Dacă nu este găsită, atunci variabila „rngFind” va conține textul „Nimic”. Dacă rngFind este nimic, atunci „4. Dacă nu este găsit, atunci continuați să căutați următorul text.

Interval(„A1”). Interior.Color = 31569

Interval(„A4:D8”). Interior.Color = 4569325

Interval("C12:D17").Cells(4).Interior.Color = 568569

Cells(3, 6).Interior.Color = 12659

Puneți exemplul de cod în modulul de program și apăsați butonul de pe bara de instrumente „Run Sub” sau de pe tastatura „F5”, cursorul ar trebui să fie în interiorul programului de execuție. Pe activ Foaie Excel Celulele și intervalul selectate în cod vor apărea în culorile corespunzătoare.

Există o nuanță interesantă: dacă este atribuit unei proprietăți .Interioare.Culoare o valoare negativă de la -16777215 la -1, apoi culoarea va corespunde unei valori egale cu suma dintre valoarea maximă a paletei (16777215) și valoarea negativă atribuită. De exemplu, umplerea tuturor celor trei celule după executarea următorului cod va fi aceeași:

În loc să afișați mesaje, puteți atribui variabilelor valori numerice de culoare declarându-le ca Long.

Utilizarea constantelor predefinite

VBA Excel are constante predefinite pentru culorile de umplere a celulelor utilizate în mod obișnuit:

Culoarea este atribuită unei celule cu o constantă predefinită în VBA Excel în același mod ca și cu o valoare numerică:

Exemplul de cod 3:

Range("A1"). Interior.Color = vbGreen

Model de culoare RGB

Sistemul de culori RGB este o combinație de trei culori primare de intensitate diferită: roșu, verde și albastru. Ele pot lua valori de la 0 la 255. Dacă toate valorile sunt 0, este negru, dacă toate valorile sunt 255, este alb.

Puteți selecta o culoare și puteți afla valorile RGB folosind paleta Excel:

Se deschide într-o fereastră nouă

Înainte de a putea atribui o culoare unei celule sau unui interval folosind valori RGB, acestea trebuie convertite într-un număr zecimal care reprezintă culoarea. Există o funcție Excel VBA pentru aceasta, care se numește RGB.

Exemplul de cod 4:

Interval(„A1”). Interior.Color = RGB(100, 150, 200)

Property.Interior.ColorIndex al obiectului Range

Înainte de apariția Excel 2007, exista doar o paletă limitată pentru umplerea celulelor cu un fundal, constând din 56 de culori, care a supraviețuit până în prezent. Fiecărei culori din această paletă i se atribuie un index de la 1 la 56. Puteți atribui o culoare unei celule după index sau puteți afișa un mesaj despre aceasta folosind proprietatea.Interior.ColorIndex.

Culoarea de fundal a celulei în Microsoft Office Excel determinat de proprietatea ColorIndex a obiectului Interior al acestei celule.

De exemplu, culoarea celulei A1 poate fi setată astfel: Cells(1, 1).Interior.ColorIndex = 6 (galben)
În consecință, este posibil să se calculeze culoarea unei celule astfel: ColorVar = Cells(1, 1).Interior.ColorIndex

Cea mai comună secvență de acțiuni pentru înțelegerea acestui exemplu este următoarea.

1. Deschideți Excel.

2. Apăsați Alt + F11

3. În dreapta, introduceți următorul cod:

Foaie de lucru secundară privată-Activare()
Cells(1, 1).Interior.ColorIndex = 6
End Sub

4. Treceți înapoi la Excel.

5. Treceți la a doua foaie și apoi din nou la prima. Ca rezultat, culoarea de fundal a primei celule de pe prima foaie ar trebui să devină gălbuie.

Culoarea textului nu este specificată în niciun format (RGB, CMYK etc.), ci prin numărul sub care se află în gama Excel. În total, există 55 de culori în gamă și o valoare este atribuită auto-înfloririi. În total, folosind caracteristica ColorIndex(), este posibil să setați 56 de valori de culoare. Aceste 55 de culori se află în colecția Culori a obiectului ActiveWorkbook, așa că le puteți schimba dacă doriți.