Excel Forum Per condividere esperienze su Microsoft Excel

Conversione colori RGB

  • Messaggi
  • OFFLINE
    cico777
    Post: 95
    Registrato il: 27/05/2019
    Città: MILANO
    Età: 56
    Utente Junior
    2016
    00 22/02/2020 11:27
    Ciao a tutti, vorrei capire come trasformare un colore dal numero 16367431 a formato RGB. Il numero 16367431
    l'ho trovato all'interno del codice VBA conscritto
    .Interior.Color = 16367431 corrisponde al colore celeste RGB (71,191,249), ma se volessi convertire un qualsiasi colore da RGB a quel numeretto lungo come devo fare?
    Grazie mille.
    [Modificato da cico777 22/02/2020 12:23]
  • OFFLINE
    cromagno
    Post: 738
    Registrato il: 02/08/2015
    Utente Senior
    Excel 2013
    00 22/02/2020 12:36
    Ciao,
    vedi codice:
    Sub ColorToRGB()
        Dim OriginalColor As Double
        Dim ConvertedColor As String
        
        OriginalColor = 16367431
        ConvertedColor = (OriginalColor Mod 256) & ", " & ((OriginalColor \ 256) Mod 256) & ", " & (OriginalColor \ 65536) Mod 256
    End Sub
    [Modificato da cromagno 22/02/2020 13:13]


    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
  • OFFLINE
    cico777
    Post: 96
    Registrato il: 27/05/2019
    Città: MILANO
    Età: 56
    Utente Junior
    2016
    00 22/02/2020 12:45
    La ringrazio, ho inserito il codice e assegnato un pulsante ma poi non so che fare, manca qualcosa?
  • OFFLINE
    cromagno
    Post: 739
    Registrato il: 02/08/2015
    Utente Senior
    Excel 2013
    00 22/02/2020 12:48
    Io non so che ci devi fare...
    quello è il codice per ottenere un valore RGB da un valore "Color", usalo per fare quel che meglio credi.
    In alternativa allega un file d'esempio e spiega quello che devi fare (visto che hai scritto qualche istruzione in VBA pensavo sapessi già come utilizzare i consigli ricevuti).
    [Modificato da cromagno 22/02/2020 12:49]


    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
  • OFFLINE
    cico777
    Post: 97
    Registrato il: 27/05/2019
    Città: MILANO
    Età: 56
    Utente Junior
    2016
    00 22/02/2020 12:58
    Grazie non so programmare, per quello mi trovo in difficoltà per trasformare il valore di un colore da RGB a colorindex, le ho allegato un file di esempio spero sia di utilità.Grazie.
  • OFFLINE
    locatevaresino
    Post: 2.252
    Registrato il: 21/03/2008
    Città: LOCATE VARESINO
    Età: 76
    Utente Veteran
    2007 / 13
    00 22/02/2020 13:14
    ciao

    guarda che stai facendo confusione con
    color e colorindex
    color sono colori in RGB ( num,num,num)
    colorindex sono colori di excel e questi sono appena 56

    se vogliamo rilevare il numero RGB dobbiamo utilizzare la formula
    interior.color
    mentre interior.colorindex ci propone un valore max 56 che excel rileva avvicinandosi prossimamente a tale colore RGB

    es rosso RGB = (255,000,000) quindi color , usando i vari fattori di cambio variamo la tonalita' del rosso in RGB quindi varia anche il valore di color
    rosso colorindex = 3 ed e' fisso sia che sia un pelino piu' chiaro che un pelino piu' scuro

    Ciao da locate
    excel 2007 / 13
  • OFFLINE
    cromagno
    Post: 740
    Registrato il: 02/08/2015
    Utente Senior
    Excel 2013
    00 22/02/2020 13:21
    Ma allora non vuoi conoscere il codice RGB... vuoi conoscere il "Color", quindi la conversione opposta a quella proposta prima.

    N.B.
    Color e ColorIndex non sono la stessa cosa.
    ColorIndex ha un numero limitato di colori (56) quindi ti verrà restituito il colore più "simile" a quello reale.

    Comunque, ti basta usare le proprietà del VBA per trovare entrambi... non c'è bisogno di conversioni:
    Sub MyColor()
        Dim MyRng As Range
        Dim ActCell As Range
        
        Set MyRng = Range("A2:A7")
        For Each ActCell In MyRng
            'Color
            ActCell.Offset(0, 2).Value = ActCell.Interior.Color
            
            'ColorIndex
            ActCell.Offset(0, 3).Value = ActCell.Interior.ColorIndex
        Next ActCell
    End Sub
    




    [Modificato da cromagno 22/02/2020 13:23]


    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
  • OFFLINE
    cromagno
    Post: 741
    Registrato il: 02/08/2015
    Utente Senior
    Excel 2013
    00 22/02/2020 13:23
    Ciao Locate,
    mi hai anticipato [SM=g27811]


    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
  • OFFLINE
    cico777
    Post: 99
    Registrato il: 27/05/2019
    Città: MILANO
    Età: 56
    Utente Junior
    2016
    00 22/02/2020 13:25
    Grazie a tutti e due e buon fine settimana.
  • ABCDEF@Excel
    00 22/02/2020 13:37
    Si richiede sempre d'allegare un esempio, mà è più semplice fare solo domande
    >>>all'interno del codice VBA conscritto
    Quale ???

    >>>ma se volessi convertire un qualsiasi colore
    Intendi una cella con colore differente ???

    In teoria sarebbe
    If Cells(1, 1).Interior.Color <> 16367431 Then Cells(1, 1).Interior.Color = 16367431

    Se desideri invece il Interior.Colorindex = 42

    Siccome vedo un (.), dovrebbe essere
     If .Interior.Color <> 16367431 Then .Interior.Color = 16367431


    Però senza visualizzare il codice non saprei dire altro.

    Ti posizioni su una cella ed avvia
     Sub a()
    MsgBox ActiveCell.Interior.ColorIndex
    MsgBox ActiveCell.Interior.Color
    End if
  • OFFLINE
    cico777
    Post: 100
    Registrato il: 27/05/2019
    Città: MILANO
    Età: 56
    Utente Junior
    2016
    00 24/02/2020 12:29
    La ringrazio.