Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    Cambiare colore a cella di google sheets quando clicco con il mouse

    Salve a tutti

    sto creando una sorta di calendario su google sheets (tipo excel)

    In verticale scrivo uno sotto l'altro il giorno:

    01/11/2019
    02/11/2019
    03/11/2019

    in orizzontale inserisco le tipologie di camere di un hotel

    matrimoniale standard | matrimoniale vista mare | suite | ecc

    Coloro di default tutte le celle di verde che sta a significare che le camere sono libere e quindi posso vendere

    Poi coloro di rosso le celle quando sono piene e non c'e' possibilità di vendita

    Al momento seleziono la cella e scelgo il colore di riempimento rosso

    Vorrei pero' sapere se c'è un modo per poter utilizzare solo il mouse ed il click e quindi:
    click sulla cella e diventa rossa
    click sulla stessa cella e diventa verde

    Logicamente dovrebbe funzionare anche quando seleziono piu' celle contemporaneamente

    Esiste un modo per fare ciò?
    Grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Ciao, purtroppo in google sheets l'evento click non è possibile gestirlo per i range o le celle. Da ciò che ho visto è possibile ottenere qualcosa del genere per degli oggetti grafici; inserendo delle immagini è possibile associare una macro che viene eseguita al click, quindi cambiare ad esempio il colore di sfondo (vedi questo video).

    Una valida alternativa potrebbe però essere quella di usare una scorciatoia da tastiera per eseguire le macro.
    Ad esempio è possibile creare una funzione per l'applicazione dello sfondo alle celle selezionate e, attraverso il pannello "Gestisci macro" definire la combinazione da tastiera.

    Sarebbe magari più pratico definire due funzioni, una per applicare il rosso e l'altra per il verde.

    Ho fatto qualche prova e a me pare abbastanza funzionale e soddisfacente.

    Puoi procedere in questo modo:

    - Accedi all'editor dal menu "Strumenti > Editor di script", dovrebbe farti editare il file macro.gs dove sono contenute le funzioni delle macro create.

    - Inserisci queste 3 funzioni:
    codice:
    /** @OnlyCurrentDoc */
    
    function coloreRosso() {
      coloraCelleAttive('#ff4444');
    }
    function coloreVerde() {
      coloraCelleAttive('#22dd22');
    }
    
    function coloraCelleAttive(bgColor) {
      var rangeBounds = 'B2:E32'; // Definire qui il range che stabilisce i limiti di applicazione
      
      var sheet = SpreadsheetApp.getActiveSheet();
      var rangeList = sheet.getActiveRangeList();
      var ranges = rangeList.getRanges();
      var rangeB = sheet.getRange(rangeBounds);
      
      var rB = rangeB.getRow();
      var cB = rangeB.getColumn();
      var hB = rangeB.getHeight();
      var wB = rangeB.getWidth();
      
      for(var i in ranges) {
        var rangeA = ranges[i];
        
        var rA = rangeA.getRow();
        var cA = rangeA.getColumn();
        var hA = rangeA.getHeight();
        var wA = rangeA.getWidth();
        
        var r = Math.max( rB, rA);
        var c = Math.max( cB, cA);
        var h = Math.min( hB+rB, hA+rA) - r;
        var w = Math.min( wB+cB, wA+cA) - c;
        
        if (!h || !w) continue;
        
        var rangeX = sheet.getRange(r,c,h,w);
        
        rangeX.setBackground(bgColor);
      }
    }
    Qui ho postato l'intero script compresa l'annotazione iniziale, ovviamente se già hai delle altre funzioni nel tuo file macro puoi aggiungere di seguito queste 3.

    - Salva la modifica e torna alla pagina principale

    - Seleziona il menu "Strumenti > Macro > Importa" quindi dalla relativa finestra aggiungi le due funzioni "coloreRosso" e "coloreVerde"; l'altra funzione "coloraCelleAttive" è quella che fa il lavoro sporco ma non serve importarla nel progetto perché sarà richiamata poi dalle altre due funzioni.

    - Seleziona quindi il menu "Strumenti > Macro > Gestisci macro" e dalla relativa finestra definisci le scorciatoie per le due funzioni, ad esempio "Ctrl + Alt + Shift + 1" e "Ctrl + Alt + Shift + 2". Tieni conto che le combinazioni hanno sempre la forma Ctrl+Alt+Shift+Number, possono essere al massimo 10, e il tasto numerico (del relativo numero) è quello della tastiera alfanumerica, non del tastierino numerico (perlomeno a me funziona così).

    Il gioco è fatto, o quasi. Puoi fare qualche prova selezionando varie celle, intervalli di celle adiacenti o anche intervalli multipli di celle non adiacenti, quindi premere le due combinazioni definite precedentemente.

    La funzione coloraCelleAttive esegue un ciclo dei vari eventuali range (se la selezione ha più intervalli non adiacenti) e applica il relativo colore di background per ciascuna cella che è tra i limiti predefiniti. Puoi infatti definire i limiti attraverso la variabile rangeBounds presente all'inizio ddi questa funzione. Ad esempio se a te interessa poter agire solo tra la colonna B e la E e tra la riga 2 e 32 basterà impostare il range "B2:E32" (che ho definito come esempio nello script). Ho impostato la cosa in questo modo per limitare il più possibile l'errore umano.

    Ovviamente le stesse macro e possibile applicarle a due "pulsanti/immagini" in modo che l'applicazione sia eseguita al click su questi (come mostrato nel video linkato sopra)

    Vedi se può andare bene e fai sapere
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ciao
    ti ringrazio per l'interessamento

    In effetti avevo visto quel video ma non sapevo come poterlo applicare alla mia "problematica".

    Ho seguito tutte le tue indicazioni e lo script funziona benissimo

    Non mi piace pero' l'applicazione con la combinazione di tasti, per questo ho voluto creare 2 immagini come nel video per applicare i colori.

    L'unico problema è che quando scrollo per andare nei mesi piu' avanti (esempio febbraio), spariscono le immagini e non posso applicare lo stile (rosso o verde)

    Esiste un modo per bloccare le 2 immagini in qualche modo? Cosi scrollando restano sempre disponibili al clic...

    Grazie ancora

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Ho seguito tutte le tue indicazioni e lo script funziona benissimo

    Non mi piace pero' l'applicazione con la combinazione di tasti, per questo ho voluto creare 2 immagini come nel video per applicare i colori.
    Bene

    Esiste un modo per bloccare le 2 immagini in qualche modo? Cosi scrollando restano sempre disponibili al clic...
    Bloccare direttamente le immagini penso di no ma puoi bloccare le righe sulle quali ci sono quelle immagini, più o meno come funziona in Excel con lo strumento "Blocca riga".

    Ad esempio potresti posizionare le immagini nella prima riga, quella di intestazione, quindi selezionare il menu "Visualizza > Blocca > 1 riga".
    Questo strumento ti consente di tenere bloccata quella riga (e tutto ciò che ci sta sopra) mentre puoi scorrere il resto del foglio. Chiaramente dovrai eseguire lo stesso procedimento per i vari fogli su cui vuoi avere questa stessa impostazione.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    in effetti non ci avevo pensato, avevo già la prima riga bloccata, adesso ho messo le immagini in quella riga e tutto funziona come deve
    Penso che è venuto un ottimo lavoro, rudimentale, ma perfetto per quello che mi serve, alla fine sono file interni quindi vanno piu' che bene

    Grazie ancora!!

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Quote Originariamente inviata da allin81 Visualizza il messaggio
    in effetti non ci avevo pensato

    Grazie ancora!!
    Figurati, buon proseguimento
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.