Maiuscole - Minuscole - impostarle sul foglio di lavoro. - dal 07/09/04 pagina vista: volte Un semplice esercizio per ottenere che le celle che contengono testo, trasformino in automatico il contenuto in tutti caratteri maiuscoli (UCase) oppure tutti in minuscolo (LCase). E' possibile comunque, con una variante, determinare che solo la prima lettera di una parola sia trasformata in maiuscola. Il ragionamento è semplice : può essere trasformato in maiuscolo o minuscolo solo il testo, per i numeri non esiste maiuscolo o minuscolo, come pure per le date, mentre per evitare possibili modifiche alle formule contenute nelle celle, escluderemo dall'operazione tali celle, identificandole attraverso la proprietà HasFormula (proprietà dell'"Insieme Range"). Poichè potremmo aver bisogno di maiuscole o minuscole solo in alcune aree dei nostri fogli, dovremo necessariamente identificare queste aree, inserendo i loro riferimenti nelle istruzioni; va da se che se volessimo applicare le modifiche ai contenuti dell'intero foglio attivo, basterebbe usare la sintassi : ActiveSheet, ma vediamo alcune possibili soluzioni:
cosa abbiamo fatto? abbiamo dichiarato la variabile "CL" di tipo "Range", poi iniziamo un ciclo For Each.., cioè : per ogni CL (cella), nelle celle selezionate (Selection.Cells), controlliamo con If che la cella in quel momento "letta" non contenga una formula (HasFormula = False): se la cella non contiene una formula, allora (Then) rendiamo il contenuto della cella letta uguale allo stesso contenuto ma trasformato tutto in Maiuscole (UCase), e passiamo con Next CL alla cella successiva - Se anzichè tutto maiuscolo, volessimo tutto minuscolo, basterà sostituire Ucase con LCase, e verrà modificato tutto in minuscolo. Il vantaggio di aver usato Selection ci consente di agire di volta in volta sulle aree che vogliamo, compreso una singola cella, senza bisogno di creare istruzioni con intervalli preimpostati nelle istruzioni.
Ora vediamo invece come fare per rendere maiuscola solo la prima lettera di testo contenuto in una cella. Anche in questo caso dovremo sempre definire l'intervallo su cui agire, (e valgono le cose appena dette), ma dovremo compiere anche altre cose, vediamo la macro:
anche qui escluderemo le celle contenenti formule (CL.HasFormula = False), poi dovremo isolare la lettera iniziale dal testo contenuto nella cella (CL) in quel momento letta, e per farlo in tutta tranquillità, usiamo una variabile "Trimma" che sarà uguale al contenuto della cella ma senza eventuali spazi vuoti iniziali (e finali) tramite la funzione Trim; questo ci assicura che la prima lettera che andremo a considerare con la variabile "Iniziale", sia sicuramente la prima da sinistra (Left(Trimma, 1)); identificata l'iniziale, alla quale applicheremo UCase, usiamo una terza variabile "Resto" che ci consente di reperire, partendo dalla seconda posizione di tutta la parola (o stringa), tramite l'istruzione Mid, tutto il rimanente della parola (o stringa) contenuta nella cella. A questo punto concateniamo ( & ) l'iniziale resa maiuscola (UCase(Iniziale)) con il rimanente della parola (Resto) e lo sostituiamo al contenuto della cella in quel momento letta (CL.Value = ...). I più volenterosi sapranno sfruttare le routines sopra viste per l'inserimento nell'evento WorkSheet_Change, per ottenere in automatico l'esecuzione delle istruzioni. Ricordo solo di usare il metodo Intersect in questo caso (vedi articolo in questa sezione), per limitare l'azione da compiere solo sulle aree che interessano.
Buon lavoro a tutti. prelevato sul sito www.ennius.altervista.org |