Ciao aaa,
ho capito che hai gestito con la funzione SE l’ utilizzo o meno delle celle B1-C1-D1 a seconda del contenuto di A1, come suggerimento di Caffey del 4-1; bene.
In aggiunta, hai usato la formattazione condizionata per suggerire all’ utente che alcune celle non devono essere compilate e per nascondere alla vista eventuali inputazioni inutili; ho capito che hai anche settato la “convalida”, per cui quando si va su una delle celle in cui mettere o non mettere qualcosa esce un messaggino del tipo “Inputare solo se A1=Xyz”.
Poi pero' dici:
Ho raggiunto il risultato ma è un palliativo. Questo perchè, se si sbaglia (anche se bisogna essere dei polli) la scelta nella casella di controllo, si avranno ovvie difficoltà etc etc
Avendo messo pero’ una convalida sulla casella A1 (da tuo “Riepilogando” capisco che l’ hai fatto, vero?) questo dovrebbe essere impossibile.
Puoi comunque aggiungere altri controlli; ad esempio in una cella libera, ad esempio F1 metti la formula
- Codice: Seleziona tutto
=SE(A1="A";"Compilare B1, C1, D1";SE(A1="B";"Compilare B1";"Errata compilazione di A1"))
Questa formula fa comparire i seguenti messaggi:
-se A1 non e’ ne’ A ne’ B: ERRATA COMPILAZIONE di A1
-se A1=A: Compilare B1, C1, D1
-se A1=B: Compilare B1
Con la stessa tecnica puoi far comparire un messaggio di errore nell’ area in cui viene prodotto un output se un input necessario non e’ stato inputato.
Infine, possiamo fare in modo che tutte le volte che compili A1 le celle B1, C1 e D1 siano azzerate, usando le macro. Per questo:
-fai tasto destro sul tab del nome del foglio su cui lavori; scegli “Visualizza codice”.
-ti si apre l’ editor vba, con il frame di dx tutto bianco
-incolla le seguenti istruzioni nel riquadro di dx
- Codice: Seleziona tutto
Dim OldA
Private Sub Worksheet_Calculate()
If Range("A1") = OldA Then Exit Sub
Application.EnableEvents = False
Range("B1:D1").ClearContents
OldA = Range("A1").Value
Application.EnableEvents = True
End Sub
(Questo pero’ e’ subordinato all’ applicazione della Convalida sulla cella A1)
Chiudi l’ editor vba da Menu ->File per tornare sul foglio excel e verifica se funziona come detto sopra.
Io sorvolerei sulla richiesta di “inibire il completamento di C1 e D1” (se A1=B), perche’ tanto l’ utilizzo dei valori di queste celle e’ gia’ subordinato al contenuto di A1 (la famosa funzione SE) e poi questi dati sono stati resi invisibili.
Per quanto riguarda l' obbligatorieta' di alcuni input, se l' utente vede il messaggio "Compila questo e compila quello", se eventualmente nell' area di output fai uscire un altro messaggio del tipo "Non hai compilato quello, ERRORE", beh mi pare che il risultato si possa considerare raggiunto.
Volendo puoi addirittura inibire l' output (sempre con la funzione SE) qualora i parametri di ingresso non siano formalmente congrui; se per questo ti serve aiuto, spiega le elaborazioni che fai sui dati introdotti e quale output produci, in modo da poter fare proposte precise.
Ciao,