Cod VBA pt colorare celula in 3 culori diferite cu shortcut
-
- Mesaje: 41
- Membru din: Mie Sep 15, 2010 2:28 pm
Cod VBA pt colorare celula in 3 culori diferite cu shortcut
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!
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
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:
Pentru testare: deschideti fisierul atasat, activati macro/continutul, faceti selectia dorita si apasati combinatia de taste Ctrl+I
IP
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
IP
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
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.
codul folosit este urmatorul:
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.
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
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
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).
I don't care what you think of me! Unless you think I'm awesome – in which case, you're right! Carry on
-
- Mesaje: 41
- Membru din: Mie Sep 15, 2010 2:28 pm
Re: Cod VBA pt colorare celula in 3 culori diferite cu short
Multumesc tuturor. Foarte bune raspunsurile.
Pana la urma am folosit codul lui IPP, doar ca am modificat culoarea albastru in verde.
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!
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