› Excel e gli applicativi Microsoft Office › Disabilitare e successivamente abilitare pulsante su foglio con messaggio
-
AutoreArticoli
-
Ciao a tutti,
chiedo un vostro gentile aiuto riguardo a un problema. In un foglio è presente un CommandButton1 che, se cliccato, mi apre una userform tipo menù e cliccando su un button in questa userform mi apre a sua volta un'altra userform per l'inserimento dei dati.
Nelle textbox (93:102) escono i valori contenuti nelle celle (del medesimo foglio dove è presente il commandbutton) W1:W10. Questi sono sempre valori che modificherò io manualmente (quindi rimarranno sempre nel foglio, non li cancello).
Il mio intento sarebbe questo: siccome i dati della colonna W li modificherò sempre (prima dell'apertura dell'userform), sarebbe possibile all'apertura della cartella, disabilitare il commandbutton1, se ci clicco uscirà un messaggio che dice "Hai modificato la colonna?" se sì abilita bottone, se no rimane disabilitato?
Grazie mille per il vostro tempo e buon weekend 🙂
disabilitare il commandbutton1, se ci clicco uscirà un messaggio
Se disabiliti un pulsante non puoi cliccarci sopra per eseguirne il codice.
Il tuo scopo è fare in modo che Excel si accorga se hai modificato l'intervallo di colonna W prima di aprire il form giusto? cioè la sequenza è: apro Excel - modifico l'intervallo di dati - premo il commandbutton che apre il form menu.
Come può Excel sapere se hai modificato un intervallo di un foglio di lavoro? Con l'evento WorkSheetChange... quando avvii il file disabiliti il command button, quando parte la modifica del foglio puoi riabilitarlo.
Ciao vecchio frac,
si la sequenza delle azioni sarebbe: apro excel--> se clicco sul button senza modificare la colonna W esce un messaggio che dice "hai modificato la colonna interessata?"----> se clicco su sì si abilita il form, se clicco su no il form non viene mostrato ----> modifico la colonna---> clicco sul commandbutton esce nuovamente il messaggio e clicco su si..
Allora prova a fare quello che ti ho suggerito, se disabiliti il command button all'apertura del file, non hai nemmeno la necessità di mostrare un alert aggiuntivo. Semplicemente non puoi fare niente finchè la colonna W non viene modificata. Potresti anche affinare il discorso e verificare che la modifica sia sostanziale e non formale (andare su una cella in colonna W e riscriverci lo stesso contenuto identico, è una modifica o no?)
Si certo, ma in alcuni casi può succedere che una o più celle della colonna W sia uguale mentre le altre cambiano. Comunque, come sarebbe la modifica sostanziale e non formale? In senso di codice dico..
Ti prego di perdonarmi ma il discorso non cambia se è un Button e non un CommandButton vero? Spero di no..
Grazie mille per l'intervento 🙂
Allora, ho scritto questa riga ma non fa niente. Cioè lo lascia abilitato
Button1.Enabled = False
l'ho inserito nell'evento WorkSheet_Change di Sheet2.. lo salvo e quando lo riapro è come se non avessi scritto niente
SE ho capito.Il pulsante lo hai inserito nel foglio"sheet2", il pulsante è un controllo Activex? prova con le righe che ti posto
OLEObjects("commandbutton1").enabled=false
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao albatros54, il pulsante non è ActiveX.. spero che questo non sia un problema...
il pulsante non è ActiveX..
credo che dovrebbe funziona lo stesso
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Purtroppo non funziona, non esce nessun messaggio neanche a correggere..
Allego file così potete vedere..
Grazie tantissimo per la pazienza!
Allegati:
You must be logged in to view attached files.C'è bisogno di un trucco in più 🙂
Allego file di prova. Certo più semplice con un Activex button.
Allegati:
You must be logged in to view attached files.A far bene si dovrebbe anche colorare il testo del pulsante di grigio quando deve essere disabilitato (non lo è mai, in effetti, solo che gli imposto una routine fittizia quando non deve fare niente)
Allego file così potete vedere..
Gret, avevo preparato un file di prova senza accorgermi del tuo file. Pazienza, credo che capirai ugualmente cosa fare 🙂
Ok, ci credi che non funziona?
Ho aperto il file ed esce un messaggio che dice "l'oggetto non supporta questa proprietà o metodo", faccio su debug e mi evidenzia questa riga:
.Font.Color = 0
poi chiudo e il tasto è disabilitato (commandbutton1). Scrivo nella colonna e si abilita.. però il button rimane abilitato..
No infatti quella parte non va, ho dimenticato di toglierla dall'evento Open, riprova cancellando le istruzioni che manipolano il font color e vedrai che stavolta funziona.
Va una meraviglia adesso....ma per il button come dovrei fare?
Il pulsante che sta nel mio foglio non fa parte del controllo activex
Ok, ho capito come cambiare il colore del testo del pulsante, riallego tutto 🙂
Allegati:
You must be logged in to view attached files.ma per il button come dovrei fare?
Nel mio esempio (il primo ma soprattutto il secondo, che funziona meglio) il command button è ActiveX, ma il secondo pulsante è un controllo modulo, che è come il tuo. Riporta le modifiche al tuo file e vedrai che gira.
Mi sto perdendo, facciamo il punto della situazione:
Worksheets("foglio1").OLEObjects(1).Enabled = Not (Intersect(Target, Range("A2:A10")) Is Nothing)
questa riga si riferisce al commandbutton (ActiveX), giusto? Mentre questa parte:
With Worksheets("foglio1").Shapes("pulsante 1") If Not (Intersect(Target, Range("A2:A10")) Is Nothing) Then .OnAction = "Pulsante1_Click" .ControlFormat.Enabled = True .TextFrame.Characters.Font.Color = 0 'black Else .OnAction = "dummy" .TextFrame.Characters.Font.Color = 8421504 'gray End If End With
si riferisce al pulsante (Form, uguale al pulsante che ho sul mio foglio) giusto? E l'istruzione sta a dire questo: apro il file ed entrambi i pulsanti (activex e form) sono disabilitati e si abilitano nel momento in cui cambio dei valori nel range A1:A10, e se clicco su uno dei due pulsanti (ho notato che hai richiamato la macro del pulsante activex) esce il messaggio giusto vero?
Quindi se io avessi bisogno solo di un pulsante, non ActiveX, devo cancellare la prima istruzione...sto andando bene?
Grazie mille della pazienza
Esatto! L'esempio coi due pulsanti era per completezza 🙂
WOW il caldo non ha preso il sopravvento su di me come credevo ..
Non posso che dirti se non un grazie 1.000.000.000.000....
Buona continuazione e buon San Lorenzo
Come non detto...
vecchio frac scusa, ti chiederei gentilmente di dare un'occhiata al file che allego perchè non so per quale motivo appena riapro il file il pulsante è ancora abilitato..
Grazie mille e scusami
Allegati:
You must be logged in to view attached files.No, direi che non va bene 🙂 Cancellando la routine vuota "dummy" hai lasciato sempre abilitato il pulsante... ti riallego il tuo file corretto.
Ho aggiunto anche il messaggio di attebnzione che volevi implementare all'inizio (la routine dummy serve a questo).
Inoltre ti raccomando di inserire sempre in testa ai tuoi moduli la direttiva Option Explicit.
Allegati:
You must be logged in to view attached files. -
AutoreArticoli