LORETTA B. nel-web forum

Linguaggi di programmazione => Problematiche Excel => Topic aperto da: Tullio - Ottobre 30, 2013, 10:21:40

Titolo: Pulsanti visibili a condizione
Inserito da: Tullio - Ottobre 30, 2013, 10:21:40
Ciao micdas,  :resistere:
questa volta il problema è il seguente:
sul foglio "fattura" ho 5 pulsanti "Nuovo","Calcola","Calcola da netto","Archivia"e"Salva",
il pulsante Nuovo dovrebbe essere sempre visibile per fare in modo che cliccando carichi il formato (RANGE("B2:H65"))
del progetto, mentre gli altri quattro dovrebbero essere visibili soltanto dopo che quest'ultimo è stato caricato, potrei intercettare il click sul pulsante Nuovo ma mi sembrerebbe più giusto fare in modo che controlli sempre la casella B2 e se il colore è grigio (formato non caricato) i pulsanti siano invisibili mentre se è bianco (formato caricato) siano visibili.
Che cosa ne dici ?
Se sì, come dovrei agire?
Grazie. Tullio
Titolo: Re:Pulsanti visibili a condizione
Inserito da: Tullio - Ottobre 30, 2013, 11:25:48
Ciao micdas,
questo è quello che ho partorito e inserito nel codice del Worksheet Fattura
ma funziona soltanto all'apertura, se lo inserisco nel Change o nel SelctionChange non mi scarica più il formato,
mi sai dare una delle tue illuminazioni?
Grazie in anticipo.
Tullio

Codice: Non sei autorizzato a vedere i links. Registrati o Login
Private Sub Worksheet_Activate()
Dim shp As Shape
Dim nameshp As String
Range("B2").Select
    With Selection.Interior
    If .TintAndShade = -0.249977111117893 Then
        For Each shp In ActiveSheet.Shapes
            nameshp = shp.Name
                If nameshp = "Button 30020" Or nameshp = "Button 30021" Or nameshp = "Button 30022" Or nameshp = "Button 30023" Then
                shp.Visible = msoFalse
                End If
        Next
    Else
       For Each shp In ActiveSheet.Shapes
            nameshp = shp.Name
                If nameshp = "Button 30020" Or nameshp = "Button 30021" Or nameshp = "Button 30022" Or nameshp = "Button 30023" Then
                shp.Visible = msoTrue
                End If
        Next
    End If
End With
End Sub
Titolo: Re:Pulsanti visibili a condizione
Inserito da: Tullio - Novembre 02, 2013, 16:36:11
 :Cartelli2: Toc toc.....c'è nessuno ?
Titolo: Re:Pulsanti visibili a condizione
Inserito da: micdas - Novembre 03, 2013, 21:50:59
ciao Tullio,
questi giorni sono particolarmente impegnato. Questo è il motivo della mia apparente assenza.
Ma venendo al problema, io penso che per ottenere i cambiamenti di stato dei pulsanti devi agire nella macro a cui i pulsanti sono collegati.
La tua Private Sub Worksheet_Activate() va bene ma funziona solo quando attivi il foglio di calcolo.
Se vuoi il cambiamento dello stato, quindi, devi includere il codice nelle macro abbinate a questi pulsanti.
Poi una osservazione da uno che cerca di programmare a basso livello:
Perchè per stabilire il colore della cella usi TintAndShade? Io userei, ed ho sempre usato il ColorIndex.
Il codice del colore lo ottengo tramite il resgistratore di macro e dopo lo applico o copio nel codice che mi serve.
Io non mi sono mai fidato del TintAndShade = -0.249977111117893 che poi è una proprietà poco usata ed anche poco documentata, oltre che molto critica.

 :ciao:
Titolo: Re:Pulsanti visibili a condizione
Inserito da: Tullio - Novembre 04, 2013, 09:57:50
Come al solito hai ragione micdas,
ho risolto inserendo la sub che azzera il progetto in ThisWorkbook_BeforeClose e di conseguanza all'apertura mi ritrovo con quanto salvato alla chiusura.
Per il TintandShade mi ero accorto anch'io che qualcosa era strano ed ho provveduto al cambiamento proprio con ColorIndex.
Grazie e scusa l'insistenza.
Tullio