pulsanti excell



  • pulsanti excell
    di circoloco (utente non iscritto) data: 08/11/2014 11:25:00

    Ciao a tutti!
    Ho questo problema: devo creare un foglio dove un operatore, cliccando su un pulsante, crei una "spunta" (nel mio caso questo simbolo: /) in un altro foglio di lavoro. E fin qua riesco perfettamente con una semplice macro senza nessun problema.
    Poi però vorrei che il pulsante cambiasse aspetto per segnalare che la spunta è attiva, e che premendo nuovamente su di esso la spunta si togliesse e che anche il pulsante in questione cambiasse nuovamente aspetto tornando al precedente.

    Ho creato due forme: una per il pulsante che crea la spunta ed una per il pulsante che la toglie.
    il risultato della macro che ho assegnato al primo pulsante è questa:

    Sub ore8on()
    '
    ' ore8on Macro
    '

    '
    Sheets("STU").Select
    Range("S11").Select
    ActiveCell.FormulaR1C1 = "/"
    Range("S12").Select
    Sheets("orale").Select
    ActiveSheet.Shapes.Range(Array("Oval 13")).Select ----->e qua mi dà l'errore
    Selection.Delete
    Sheets("pulsanti").Select
    Range("B2").Select
    ActiveSheet.Shapes.Range(Array("Oval 1")).Select
    Selection.Copy
    Sheets("orale").Select
    Range("B4").Select
    ActiveSheet.Paste
    Range("C5").Select
    End Sub



  • di lepat (utente non iscritto) data: 08/11/2014 12:17:32

    allega un file di esempio



  • di Lucas87 data: 08/11/2014 15:20:14

    Ciao
    1-Se hai bisogno di un pulsante, crei un pulsante. Non si usano forme per simularli. I pulsanti sono più versatili e facilmente controllabili da codice.
    2-Volendo usare le forme: il codice sotto usa una sola forma, ne controlla il colore e stabilisce come agire. Se è gialla mette la barra sulla cella A1 del secondo foglio e cambia il colore della forma in verde. Se è verde toglie la spunta e colora di giallo la forma.
     
    Sub spunta()
    Select Case Shapes("Ovale 1").Fill.ForeColor.RGB
        Case RGB(255, 255, 0)
            Sheets(2).Range("a1") = "/"
            Shapes("Ovale 1").Fill.ForeColor.RGB = RGB(0, 176, 80)
        Case RGB(0, 176, 80)
            Sheets(2).Range("a1") = ""
            Shapes("Ovale 1").Fill.ForeColor.RGB = RGB(255, 255, 0)
    End Select
    End Sub



  • di circoloco (utente non iscritto) data: 09/11/2014 15:21:27

    si hai ragione! ho fatto con i toggle button, molto più comodo

    Grazie!