Pagina 1 din 1
Cod VBA pt colorare celula in 3 culori diferite cu shortcut
Scris: Mie Ian 03, 2018 5:17 pm
de djidji_thebest
Buna,
Am gasit un cod pe care vreau sa il modific si nu reusesc sa il finalizez.
Am nevoie ca prin shortcut-ul Ctrl+i sa imi coloreze celula activa, sau celulele active in galben la prima apasare, la a doua apasare in rosu, la a treia apasare in verde si la a patra apasare sa decoloreze.
Sub changeCellColor()
x = ActiveCell.Interior.Color
If x = 255 Then
Selection.Interior.Color = RGB(0, 0, 255)
Else
If x = 16711680 Then
Selection.Interior.Color = RGB(0, 255, 455)
Else
Selection.Interior.Color = RGB(255, 0, 0)
End If
End If
End Sub
Sau daca aveti alt cod pt asta, as fi recunoscator.
Ma poate cineva ajuta?
Multumesc!
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
Scris: Mie Ian 03, 2018 7:42 pm
de IPP
Buna ziua
Atasat aveti spre testare o propunere.
Obiectiv: colorarea, la apasarea Ctrl+I, a fondului celulei/celulelor selectata/e in prealabil pornind de la fondul existent in celula active la momentul rularii macro si in ordinea culorilor: galben, rosu si (in exemplul meu) albastru pentru ca in Excel 2010 aceasta a fost culoarea pentru codul 16711680.
Am folosit urmatorul cod:
Cod: Selectaţi tot
Sub ChangeColor()
'IPP - 03.01.2018
Dim x As Long
x = ActiveCell.Interior.Color
If x <> 65535 And x <> 255 And x <> 16711680 Then
Selection.Interior.Color = 65535 'galben
Exit Sub
End If
If x = 65535 Then
Selection.Interior.Color = 255 'rosu
Exit Sub
End If
If x = 255 Then
Selection.Interior.Color = 16711680 'albastru
Exit Sub
End If
If x = 16711680 Then
Selection.Interior.Color = xlNone 'nimic
Exit Sub
End If
End Sub
Pentru testare: deschideti fisierul atasat, activati macro/continutul, faceti selectia dorita si apasati combinatia de taste Ctrl+I
IP
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
Scris: Joi Ian 04, 2018 1:48 am
de TudyBTH
Buna,
Doua observatii as face referitor la problema dv.
1. Combinatiile de taste Ctrl + <caracter> sunt cam folosite deja de Excel (Ctrl+I de exemplu este folosit pentru "Apply or remove italic formatting"). Este recomandat sa folositi combinatii de genul Ctrl + Shift + <caracter> (Ctrl+Shift+I in cazul de fata).
2. Atunci cand folositi VBA pentru adaugarea unor functionalitati in Excel, este bine sa scrieti un cod care sa ramana valabil/functional chiar daca se modifica datele. In cazul de fata culorile.
Pentru a realiza asta, puteti seta culorile dorite intr-un range de celule (oriunde in fisier) si sa definiti cu un nume acel range. In fisierul atasat am definit cele patru culori in zona A1:A4 din foaia "Settings" cu numele "colors". In acest fel, veti putea modifica oricand culorile sau numarul acestora fara a fi nevoie sa modificati si codul VBA.
Capture.JPG
codul folosit este urmatorul:
Cod: Selectaţi tot
Sub ChangeColor_2()
Dim x As Long
Dim i As Integer, n As Integer
Dim rColors As Range, r As Range
Set rColors = ThisWorkbook.Names.Item("colors").RefersToRange
n = rColors.Rows.Count
Set r = Selection
x = rColors(1).Interior.Color
For i = 1 To n
If r.Cells(1, 1).Interior.Color = rColors(i).Interior.Color Then
x = rColors((i Mod n) + 1).Interior.Color
Exit For
End If
Next i
r.Interior.Color = x
End Sub
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
Scris: Joi Ian 04, 2018 7:47 pm
de Nills
Diferenta dintre cele 2 coduri, este ca, cel al lui Tudy "umple" cu alb celula. Practic, nu lasa celula asa cum o gaseste (nu mai are linii de incadrare celula / range-ul).
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
Scris: Joi Ian 18, 2018 12:30 pm
de djidji_thebest
Multumesc tuturor. Foarte bune raspunsurile.
Pana la urma am folosit codul lui IPP, doar ca am modificat culoarea albastru in verde.
Cod: Selectaţi tot
Sub ChangeColor()
Dim x As Long
x = ActiveCell.Interior.Color
If x <> 65535 And x <> 255 And x <> 65280 Then
Selection.Interior.Color = 65535 'galben
Exit Sub
End If
If x = 65535 Then
Selection.Interior.Color = 255 'rosu
Exit Sub
End If
If x = 255 Then
Selection.Interior.Color = 65280 'verde
Exit Sub
End If
If x = 65280 Then
Selection.Interior.Color = xlNone 'nimic
Exit Sub
End If
End Sub
Si codul tau TudyBTH e interesant, am sa il folosesc probabil in alte circumstante - e f buna ideea. Multumesc si de atentionarea shortcut-ului format din caractere, insa in excel nu prea folosesc formatarea "Italic" la text. Plus ca o regasesc cu Ctrl+2 parca. Multzam fain!