Può capitare a volte di avere un elenco di nomi tutto in minuscolo o tutto in maiuscolo e di voler visualizzare visualizzare i nomi col solo carattere iniziale maiuscolo.
Vediamo subito una tabella di esempio:
Possibili elenchi in minuscolo o in maiuscolo |
Tabella finale |
|
| nome | NOME | Nome |
|---|---|---|
| migliavacca luigi | MIGLIAVACCA LUIGI | Migliavacca Luigi |
| rizzi carlo | RIZZI CARLO | Rizzi Carlo |
| liberali franca | LIBERALI FRANCA | Liberali Franca |
| di maggio mario | DI MAGGIO MARIO | Di Maggio Mario |
| scicchitano andrea | SCICCHITANO ANDREA | Scicchitano Andrea |
| d'ascanio giuseppe | D'ASCANIO GIUSEPPE | D'Ascanio Giuseppe |
| edelvisi maurizio | EDELVISI MAURIZIO | Edelvisi Maurizio |
| gerardini silvano | GERARDINI SILVANO | Gerardini Silvano |
| pasotti alessio | PASOTTI ALESSIO | Pasotti Alessio |
Esiste in VBA la Funzione StrConv che restituisce una stringa convertita come specificato da un appropriato argomento:
| Argomento | Valore | Descrizione |
|---|---|---|
| vbUpperCase | 1 | Rende maiuscola la stringa |
| vbLowerCase | 2 | Rende minuscola la stringa |
| vbProperCase | 3 | Rende maiuscola la prima lettera di ogni parola della stringa |
Da questa tabella è logico intuire che l'argomento da usare con la Funzione StrConv è vbProperCase.
La sintassi da usare è: StrConv(string, costante).
Proviamo ad applicare questa funzione al nostro intervallo:
Tuttavia il risultato ancora non è soddisfaciente. Infatti vediamo che il nome D'ascanio Giuseppe conserva la "a" dopo l'apostrofo ancora minuscolo.
| Nome |
|---|
| Migliavacca Luigi |
| Rizzi Carlo |
| Liberali Franca |
| Di Maggio Mario |
| Scicchitano Andrea |
| D'ascanio Giuseppe |
| Edelvisi Maurizio |
| Gerardini Silvano |
| Pasotti Alessio |
A questo punto dobbiamo intervenire nel codice passando ad esaminare la presenza dell'apostrofo.
per controllare la presenza dell'apostrofo viene usata la Funzione InStr:
Apostrofo = InStr(1, Parola, "'")
Nella variabile Apostrofo viene memorizzato un numero superiore a 0 (zero) che indica la posizione dove è stato trovato l'apostrofo, altrimenti restituisce 0 (zero).
Se viene trovato l'apostrofo si rende maiuscolo il carattere immediatamente successivo usando la Funzione UCase.
Dopo questa ulteriore verifica avremo la giusta trasformazione:
d'ascanio giuseppe oppure D'ASCANIO GIUSEPPE verrà trasformato in D'Ascanio Giuseppe
Questo è finalmente il codice completo:
Una domanda: servirà questa routine?
Se sarà utile a qualcuno ne sarò lieto.