› Sviluppare funzionalita su Microsoft Office con VBA › Macro Anteprima di stampa con condizione
-
AutoreArticoli
-
Buongiorno
ho bisogno di condizionare l'anteprima di stampa al verificarsi di un numero in una determinata cella.
La cella A25 del foglio DATI controlla la compilazione di alcuni campi e se questi sono correttamente compilati da come totale il numero 20.
Quindi prima che la macro faccia il suo dovere, ho bisogno che controlli che la cella A25. Se la cella A25 è uguale a 20 allora la macro può aprire l'anteprima di stampa del foglio FV, altrimenti deve comparire un box con il seguente messaggio: NON HAI COMPILATO TUTTI I CAMPI OBBLIGATORI!!! COMPILA I CAMPI EVIDENZIATI IN ROSSO.
Grazie mille per l'aiuto
Questa è la macro
Sub PREVIEW()
With Worksheets("FV")
.Activate
.PrintPreview
End With
Sheets("DATI").Select
Range("C4").Select
End SubRifletti un attimo.
Tu devi far scattare un'operazione (visualizza anteprima) quando accade qualcosa (un evento) in una determinata zona del foglio (la cella A25).
La macro che hai citato come viene avviata? in base a cosa, a quale condizione? qualcuno la deve eseguire: un pulsante? da sola? Non c'è niente, in quel codice, che aiuti a capire come avviene la funzione di preview al verificarsi della condizione.
Allora chiediti: esiste un sistema, in Excel, per intercettare la modifica di una cella, controllarne il valore, eseguire qualcosa se questo valore è uguale a una soglia prefissata? Se esiste, come si implementa in VBA?
Scusa vecchio frac ho omesso di dire che la macro viene eseguita dall'utente cliccando un oggetto... se l'utente clicca l'oggetto a cui ho collegato la macro attuale, questa apre l'anteprima di stampa a prescindere.
La mia intenzione invece è quella di evitare che la macro apra a prescindere l'anteprima di stampa, ma cliccando l'oggetto, faccia, prima di aprire la prewiev, un controllo sulla cella A25 per vedere il numero contenuto.
Se il numero della cella A25 è uguale a 20, allora la macro apre l'anteprima di stampa, altrimenti deve comparire un box con il messaggio scritto prima, per allertare l'utente che uno o più campi non sono stati compilati.
Chiudendo il box, si torna al foglio di lavoro per inserire i dati nei campi non compilati.
Nella mail precedente sono stato molto esaustivo... spero di esserlo stato adesso
C'è qualcosa che mi sfugge o che non ho capito ancora, perchè mi sembra di una banalità disarmante.
Nel codice dell'oggetto cui è collegata la macro basta fare il controllo sul contenuto della cella in questione e se la condizione è soddisfatta lancia l'anteprima.
sub oggetto_click() if range("A25") = 20 then Worksheets("FV").PrintPreview else msgbox "Uno o più campi non sono compilati" end if End WithCiao Vecchio Frac lo so che per te può sembrare banale... ma ho iniziato da poco con il VBA e cerco di capire volta per volta che devo creare una macro il ragionamento da fare.
Grazie mille per l'aiuto
Ma guarda io non volevo offendere nessuno, ti prego.
Fai benissimo a chiedere per ogni minimo dubbio. Piuttosto che farsi convinzioni sbagliate e poi trovarsi a programmare male, è meglio chiedere e chiedere anche le cose più semplici. Sono io che a volte vedo complicazioni anche dove le cose sono risolvibili 🙂
Devi comunque portare via il concetto: nel codice associato a un oggetto istruisci Excel a verificare una condizione e, se è soddisfatta (risultato = True), viene eseguito il blocco di istruzioni tra If e Else, altrimenti il blocco successivo, tra Else e End If.
-
AutoreArticoli
