Avevo promesso un "upgrade" al gioco di Mario, e' contenuto nel file scaricabile da questo link:
https://www.dropbox.com/s/ulvvamt34oq3u ... .xlsm?dl=0Noterete sul foglio di lavoro, verso destra un primo blocco di 3 pulsanti su sfondo verde, di cui il piu' complesso e' quello con la scritta FAI TU, che consente di risolvere autonomamente tutte le situazioni "obbligatorie" (quelle cioe' dove lo schema corrente obbliga a scrivere necessariamente un solo specifico carattere). Nella gran parte dei casi questo lentamente risolve autonomamente lo schema (a riprova che si tratta di un gioco di attenta pazienza).
Qualche volta potrebbero invece rimanere delle aree non compilate che andranno compilate a mano: sarebbe questa la fase piu' delicata, perche' si tratta di fare una ipotesi tra quelle possibili (beh, sono solo 2: metto X? oppure O?), andare avanti e magari scoprire dopo 3 mosse che la combinazione successiva e' impossibile.
Qui puo' aiutare il secondo blocco di pulsanti, su sfondo Arancione:
-StartLog (come dice il nome) avvia la registrazione della cronistoria delle modifiche
-Rewind invece puo' cancellare all'indietro le modifiche memorizzate nella cronistoria
Quindi quando rimanete con delle celle da compilare a mano attivate la cronistoria; poi fate il vostro inserimento e continuate con FAI TU.
Se FaiTu non arriva a una soluzione allora significa che la vostra scelta e' errata: fate Annulla, riavviate la cronistoria, scegliete l'altro valore e riprovate con FaiTu
Ovviamente potete anche avviare la cronistoria fin dall'inizio e poi avviare FaiTu. In questo caso se premete Annulla saranno annullati tutti gli inserimenti fatti da FaiTu (quindi presumibilmente corretti). Attenzione: se premete StartLog quando la cronistoria e' gia' avviata (pulsante in Verdino) allora la cronistoria verra' azzerata e riparte daccapo.
Il tutto e' ottenuto al 99% con le macro contenute sul Modulo Vba "CONTROLLER", ma c'e' l'inserimento sulla Sub Worksheet_Change di Foglio1; in particolare ho aggiunto questa Call in questa posizione:
- Codice: Seleziona tutto
If Target.Interior.ColorIndex = xlNone Then
Application.EnableEvents = False
Target = UCase(Target) 'carattere maiuscolo
Application.EnableEvents = True
Call Historica(Target.Address(0, 0)) '<<< Aggiunta da Anthony
End If
Potrebbe teoricamente succedere che FaiTu non trova una soluzione, nel senso che a un certo punto la situazione non ammette piu' inserimenti corretti. In questo caso la macro genera un messaggio di errore.
Ipotizzando per ora che la macro di FaiTu sia corretta questo vorrebbe dire che lo schema iniziale non ammette soluzione; oppure piu' probabilmente FaiTu e' stata avviata dopo un tot di inserimenti manuali errati.
Non ho ancora parlato degli altri 2 pulsanti su sfondo Verde:
-CONTROLLA ispeziona ta tabella per verificare se ci sono delle situazioni di errore (caratteri sbagliati, o sequenze errate) e le segnala con messaggio e graficamente
-OBBLIGATI ispeziona la tabella e cerca se ci sono delle sequenze "obbligate" e le segnala graficamente
Tra questi due pulsanti esiste un CheckBox "Tutti": se spuntato allora i due pulsanti cercheranno tutte le combinazioni; altrimenti l'analisi si fermera' sulla prima, per consentire all'operatore di intervenire
Ovviamente la macro dietro al pulsante FaiTu e' una estensione del controllo "Obbligati", nel senso che mentre Obbligati si limita a segnalare la situazione e cede in controllo all'operatore FaiTu invece scrive la scelta obbligata e procede con la ricerca successiva.
Infine, per aggirare il problema della "Cella Non modificabile" io ho agganciato in coda alla Sub Nuovo di Mario una Call Riprova; nel frattempo Mario ha pubblicato un aggiornamento della Sub Nuovo, quindi la mia modifica ora e' disallineato con la sua soluzione.
Spero che i pigri come me apprezzeranno questa evoluzione, che permette di rilassarsi mentre il gioco va avanti
Ciao!
PS: FaiTu e' la mia risposta alla domanda di W&G