Newsgroup: it.comp.lang.visual-basic
Titolo: VB ed Excel

Ciao.
Un favore: ho realizzato un test per gli amici utlizzando Excel, in 
definitiva devono riempire le caselle
di testo e premere, alla fine, il pulsante Conferma, al quale ho associato 
una macro in VB.
Questa macro, decisamente banale, cambia il colore di alcune celle rendenfo 
visibile il risultato ottenuto.
Il problema è che, avendo utilizzato un 
CONTA.SE
 per la visualizzazione del 
risultato, modificando le informazioni nelle celle destinate
alle risposte è a questo punto possibile vedere "in tempo reale" gli errori 
effettuati e terminare senza difficoltà il test.
In definitiva vorrei sapere se esiste un comando VB, da inserire nella macro 
di conferma, che renda inutilizzabile il range di celle
da, esempio, C5 ad arrivare a C55.
In questo modo alla fine verrebbe solamente visualizzato il risultato 
ottenuto senza possibilità di cambiamenri finchè, premendo il pulsante
Ricomincia, al quale ho associato un'altra macro che azzera i valori, 
vengono sbloccate le celle ed è possibile riprendere dall'inizio.
Grazie per l'aiuto. 

Se non ho capito male, la tua macro sostituisce la risposta errata con 
quella corretta oltre a cambiare il colore di sfondo della cella.
Le soluzioni sono molte, ma quella che ritengo più elegante è che la tua 
macro inserisca la risposta giusta in un "fumetto" (alias commento) 
associato alla cella, forzandone la visibilità. In questo modo avresti 
evidenziata la risposta sbagliata fornita dall'utente e contemporaneamente 
indicheresti quella giusta.
-- 
Ettore Massimo Albani 

Se non ho capito male, la tua macro sostituisce la risposta errata con...
In effetti non è proprio così: una volta terminato il test ed aver 
selezionato il pulsante Conferma viene visualizzato il punteggio ottenuto, 
che
riporta il numero di risposte corrette e sbagliate; Lungi da me, essendo un 
test, suggerire le risposte corrette.
La questione è che, essendo la funzione Excel 
CONTA.SE
 continuamente 
operativa in background, se il risultato ottenuto è visibile ed i campi
ralativi alle risposte ancora utilizzabili è sufficiente, con un po' di 
pazienza, andare a modificare le risposte al fine di completare il test con 
successo, visto
che il risultato è continuamente aggiornato.
La mia necessità è trovare una funzione in VB che, una volta avviata la 
macro di conferma, inibisca l'utilizzo delle celle nelle quali sono presenti
le risposte fornite fino alla selezione del pulsante Riavvia, il quale 
cancella il contenuto di tali celle, azzera i risultati e dovrebbe, tramite 
funzione
VB, consentire un nuovo inserimento delle risposte previo sblocco delle 
celle di cui sopra.
Grazie. 

Perchè non assegni la macro al pulsante invece che alla cella?
Nicola

Scusami ma non avevo capito...
Supponiamo che l'area del tuo test vada dalla colonna A sino alla colonna G 
e che le domande siano 50: inserisci nella cella H1 (ad esempio) il 
risultato del "
conta.se
 risposte Fornite", in H2 "
conta.se
 risposte Giuste", 
poi imposti a 0 la larghezza della colonna H. Questo ti consente di avere i 
totali dei vari "
conta.se
" a tua disposizione senza mostrarlo al'utente.
Ora devi proteggere il foglio con una password avendo cura precedentemente 
di togliere la spunta a "bloccata" sulle proprietà delle celle in cui 
vengono inserite le risposte.
Il foglio è pronto e l'utente può inserire le risposte alle 50 domande.
Quando premerà il tasto "Conferma" la tua macro associata farà apparire il 
messaggio "Hai risposto a " & H1 & " domande su 50, di cui " & H1 & " 
giuste".
Dopo il messaggio, la macro resetterà le risposte alle domande senza la 
necessità del pulsante "Riavvia".
-- 
Ettore Massimo Albani 

>di cui " & H1 & "
di cui H2

Supponiamo che l'area del tuo test vada dalla colonna A sino alla colonna 
...
Ok, grazie per il consiglio, ne terrò conto ma, scusa se insisto, la 
funzione alla quale ho accennato che possa inibire l'utilizzo di una cella 
esiste o, come ho dedotto dalla risposta, è necessario "aggirare" la 
questione per ottenere un risultato? In effetti le colonne nelle quali 
vengono elaborati i risultati ed il punteggio le ho chiaramente nascoste, 
come del resto ho disattivato la visualizzazione delle barre di spostamento 
e delle intestazioni di riga e colonna. In riferimento all'altra risposta 
faccio presente che le macro le ho chiaramente assegnate ai pulsanti, ma il 
loro scopo è unicamente quello di gestire la visualizzazione nelle celle.
Di nuovo grazie. 

La domanda che fai mi conferma che ti manca qualche conoscenza in più sulla 
protezione dei fogli Excel.
A parte il trucco della colonna invisibile, che si poteva anche attuare come 
hai fatto tu cambiando il colore del carattere, da macro è possibile 
proteggere/sproteggere singole celle o gruppi di celle.
Per default, tutte le celle del foglio hanno la proprietà Bloccata = True: 
quando proteggi il foglio, perciò, tutte le celle sarebbero inaccessibili 
alle modifiche. Se, invece, prima di proteggere il foglio, poni per alcune 
celle la proprietà su false, allora puoi modificare esclusivamente quelle da 
te indicate ed in più hai la comoda possibilità di "navigare" sulle predette 
celle con l'uso del Tab/Shift Tab.
Usa il reg. di macro per individuare l'istruzione che ti consente di farlo.
-- 
Ettore Massimo Albani