Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Maiuscolo automatico e manuale contemporaneamente

443 views
Skip to first unread message

Dino

unread,
Jan 17, 2010, 7:33:48 AM1/17/10
to
Ciao a tutti vorrei gentilmente in un campo "testo" la prima lettera
di una frase sempre maiuscola,mentre le rimanenti minuscole.Ovviamente
se le rimanenti vengono scritte in maiuscolo devono rimanere tali:
Esempio1:
Rossi enrico (enrico se' e' minusc deve rimanere tale)
Esempio2:
Rossi Enrico (Enrico se' e' maiusc deve rimanere tale).
Il codice che ho a disposizione (postatomi gentilmente sul nostro NG)
o mi da le iniziali tutte maiscole o solo la prima maiuscola.

TuoCampo = Format(Mid(TuoCampo, 1, 1), ">") & Format(Mid(TuoCampo,
2, Len(TuoCampo) - 1), "<")
Private Sub tuoCampo_AfterUpdate()
tuoCampo = StrConv(TuoCampo, vbProperCase)
End Sub

Se io ad esempio dovessi scrivere "Azienda tessile di Rossi Enrico"
come potrei gestirla con questo codice???

Grazie Dino

Geppo

unread,
Jan 17, 2010, 2:28:40 PM1/17/10
to


inserisci in un modulo questa funzione:

function StrconvMod(vTesto as string) as string
dim i as integer

'converto il testo in minuscolo lasciando solo la prima lettera maiuscola
StrconvMod = strconv(vTesto, vbpropercase)

'ciclo il testo lettera per lettera
'rimettendo le maiuscole al loro posto se presenti
for i = 1 to len(vTesto)
select case asc(mid(vTesto,i,1))
case 65 to 90
mid(StrconvMod, i,1) = mid(vTesto,i,1)
end select
next i

end function


Poi dalla textbox ad esempio nell'evento exit la ruchiami cosi:

private sub textbox_exit(cancel as integer)

StrconvMod(textbox)

end sub


> Grazie Dino


--
Ciao
Geppo


Geppo

unread,
Jan 17, 2010, 2:35:13 PM1/17/10
to
...ops rileggendo.......... la funzione diventa cosi:
---cut---

> inserisci in un modulo questa funzione:

function StrconvMod(vTesto as string) as string
dim i as integer

'converto la prima lettera in maiuscolo
StrconvMod = strconv(vTesto, vbpropercase)

'ciclo il testo lettera per lettera saltando la prima


'rimettendo le maiuscole al loro posto se presenti

for i = 2 to len(vTesto)

mid(StrconvMod, i,1) = mid(vTesto,i,1)
next i

end function

e la richiami come ti ho indicato.

--
Ciao
Geppo


Dino

unread,
Jan 17, 2010, 4:02:43 PM1/17/10
to

ciao e grazie per la risposta.domani mattina provo e poi ti faccio
sapere(vrifica per cortesia la mia risposta domani in matt.)
grazie ancora Dino

Geppo

unread,
Jan 17, 2010, 5:42:14 PM1/17/10
to

Non so se domani in mattinata potro' leggerti, comunque se non va, puoi
anche provare semplicemente cosi:

private sub TuaTextbox_Exit(cancel as integer)

TuaTextbox = UCase(Mid(TuaTextbox, 1, 1)) + Mid(TuaTextbox, 2,
Len(TuaTextbox))

end if

> grazie ancora Dino

--
Ciao
Geppo


Vladimiro Leone

unread,
Jan 17, 2010, 7:05:37 PM1/17/10
to

Ciao Dino, se vuoi solo la prima lettera maiuscola di ogni frase, Dopo
aggiornamento o Su uscita, puoi usare il seguente codice:

Dim x As String
x = Mid(MiaTextBox, 2)
MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1) & x

Naturalmente al posto di "MiaTextBox" metterai il vero nome della tua
casella di testo.
Ciao Vladimiro.

Dino

unread,
Jan 18, 2010, 2:43:12 AM1/18/10
to
> Ciao Vladimiro.- Nascondi testo citato
>
> - Mostra testo citato -

Ciao e grazie a tutti per le risposte.Allora andiamo in
ordine.Partiamo con le soluzioni di geppo.
con la prima soluzione quella del modulo mi da errore. Mi dice che
nella sub non e' previsto un modulo.
il l'ho richiamata come mi avevi detto.
La seconda soluzione invece va bene al 90%,cioe' se scrico tutto
minuscolo mi riporta la rima lettera della prima parola in
maiuscolo.Se scrivo maiuscolo tutte le iniziali delle altre parole le
lascia maiuscole.L'unico problema si riscontra con il "tutto
maiuscolo".Se per esempio l'utente scrive tutto maiuscolo invece di
riportare tutto in minuscolo (tranne la prima lettera della prima
parola) rimane tutto il maiuscolo.
Di seguito ti riporto la riga di codiceche ho voluto variare con il
format ma non funziona.mi riporta tutto in minuscolo.
Cliente = UCase(Mid(Cliente, 1, 1)) + Mid(Cliente, 2, Format(Len
(Cliente), "<"))

Ormai ci siamo basta un non nulla.

Adesso rispondo a Vladimiro.Nell'inserire il tuo codice mi si cancella
tutta la riga che ho inserito,tranne la prima lettera.

Grazie ancora aspetto voste notizie

Dino

Vladimiro Leone

unread,
Jan 18, 2010, 8:32:43 AM1/18/10
to
Scusa Dino, probabimente hai ricopiato male!
Ti riscrivo tutto per intero e con le spigazioni:

Dim x As String
' scrivi tutta la frase eliminando solo la prima lettera
x = Mid(MiaTextBox, 2)
'scrivi solo la prima lettera della frase cancellando il resto + x
(tutto tranne la prima)


MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1) & x

>


> Grazie ancora aspetto voste notizie
>

> Dino- Nascondi testo citato


>
> - Mostra testo citato -

Ciao Vladimiro.

Dino

unread,
Jan 18, 2010, 10:18:58 AM1/18/10
to

Vladimiro hai proprio ragione (sara' la vecchiaia) avevo copiato
male.Pero' rimane sempre un problema:
Se scrivo tuttto in maiuscolo mi rimane tale.Bisognerebbe invece che
riportasse tutto in minuscolo tranne la
prima lettera della prima parola.Faccio un esempio banale:

"GIOVANNI DE REGINA" dovrebbe diventare "Giovanni de regina" (se poi
voglio la d e la g maiuscola la vado a scrivere).

Ciao e grazie ancora
Dino

Vladimiro Leone

unread,
Jan 18, 2010, 10:31:55 AM1/18/10
to

Dim x As String
' scrivi tutta la frase IN MINUSCOLO eliminando solo la prima lettera
x = Lcase( Mid(MiaTextBox, 2))


'scrivi solo la prima lettera della frase cancellando il resto + x
(tutto tranne la prima)
MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1) & x

Ciao Vladimiro.

Dino

unread,
Jan 18, 2010, 10:52:11 AM1/18/10
to

Vladimiro forse non mi spiego bene.Il codice funziona
benissimo.Supponiamo pero' che l'utente abbia sbadatamente pigiato il
maiuscolo permanente (lucchetto) il testo scritto rimane in
maiuscolo,io voglio(sempre se e' possibile) che ritorni in automatico


in minuscolo tranne la prima lettera della prima parola.

Grazie ancora
Dino

Vladimiro Leone

unread,
Jan 18, 2010, 1:02:28 PM1/18/10
to

Probabilmente sei un pò sbadato :-)
L'ultima routine che ti ho scritto fa esattamente quello che chiedi:
tramite una variabile "x" memorizzo la frase scritta nella casella di
testo, siccome ho bisogno di eliminare la prima lettera dalla frase e
trasformare in carattere minuscolo il resto, uso due funzioni
"Mid"( per eliminare) e LCase (per trasformare in minuscolo):


x = Lcase( Mid(MiaTextBox, 2))

poi ho bisogno che la prima lettera della frase presente nella casella
di testo resti o diventi maiuscola e che il resto venga cancellato,
uso tre funzioni "Mid" ( per eliminare) "StrConv" e
"vbProperCase" (per trasformare la prima lettera di ogni parola in
maiuscolo):


MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1)

infine unisco quello che resta della frase scritta nella casella di
testo (prima lettera in maiuscolo) più il contenuto della variabile x
(intera frase in minuscolo decurtata della prima lettera):

Dino

unread,
Jan 18, 2010, 1:51:12 PM1/18/10
to

Vladimiro sei molto gentile a darmi solo dello "sbadato".In realta'
ero di corsa e le ho dato un'occhiata veloce.
Adesso con un po' piu' di calma le cose vanno molto piu' bene.Se
scrivo tutto maiuscolo mi riporta tutto a minuscolo tranne la prima
lettera della prima parola.Pero' se adesso ad esempio scrivo:
"azienda Rossi Mario" lui la reimposta in "azienda rossi mario" in
realta' l'altra mia esigenza e' proprio questa.Se il codice trova al
tre parole con la prima la lettera maiuscola le deve lasciare.
Spero di essere stato preciso quanto l'ho sei stato tu.Scusa ancora
per la mia disattenzione e grazie ancora
Dino

Vladimiro Leone

unread,
Jan 18, 2010, 3:12:30 PM1/18/10
to
secondo la routine magari "Azienda rossi mario"

> realta' l'altra mia esigenza e' proprio questa.Se il codice trova al
> tre parole con  la prima  la lettera maiuscola le deve lasciare.

e se trova "AZIENDA Rossi Mario", oppure "azienda ROSSI Mario" come
dovrebbe essere scritta?

> Spero di essere stato preciso quanto l'ho sei stato tu.Scusa ancora
> per la mia disattenzione e grazie ancora

> Dino- Nascondi testo citato
>
> - Mostra testo citato -

Ci vorrebbe la palla di vetro :-)
Non saprei come aiutarti, mi dispiace.
Ciao Vladimiro.

Dino

unread,
Jan 19, 2010, 2:30:03 AM1/19/10
to

Grazie Vladi,mi ha icomunque aiutato moltissimo!!!!(alla prossima)
Dino

Alessandro Cara

unread,
Jan 19, 2010, 5:30:07 AM1/19/10
to
Dino ha scritto:
[cut]

> Grazie Vladi,mi ha icomunque aiutato moltissimo!!!!(alla prossima)

Questa dovrebbe risolvere il tuo problema
Function handleString(vText as string) as string
Dim aStr as variant, aEl as variant, sRes
aStr = split(vText," ")
for each aEl in aStr
sRes = sres & left(ael,1) & lcase(mid(aEl,2)) & " "
next
handleString = sRes
end function


la richiami con: myStr = handleString(textbox.value)
--
ac

Alessandro Cara

unread,
Jan 19, 2010, 5:33:22 AM1/19/10
to
Alessandro Cara ha scritto:
PS: per evitare possibili errori con parole di un solo carattere

questa:


sRes = sres & left(ael,1) & lcase(mid(aEl ,2)) & " "

diventa:
sRes = sres & left(ael,1) & lcase(mid(aEl & " ",2))
-
ac

Dino

unread,
Jan 19, 2010, 6:02:39 AM1/19/10
to
On 19 Gen, 11:33, Alessandro Cara <alessandro.c...@ay-1anetwork.it>
wrote:
> ac- Nascondi testo citato

>
> - Mostra testo citato -

Alessandro ciao e grazie per la rispsota e per la disponibilita'.
Mi sembra di aver capito che qyuesta funzione la debba inserire in un
modulo,vero?
Nella funzione .'argomento (vtext....) va sostiuito con il nome del
mio campo???
e così anche quando la richiamo???
Grazie ancora e scusa per eventuali domande banali
Dino

Dino

unread,
Jan 19, 2010, 6:46:56 AM1/19/10
to
> Dino- Nascondi testo citato

>
> - Mostra testo citato -

Ale ciao.Ho provato sia inserendola in un modulo che come funzione
normale,ma ...nel primo caso mi da errore mentre nel secondo
non funziona.Sicuramente sbagliero' io.

NB: La funzione io la richiamo nell'evento del campo "dopo
aggiornamento" in questo modo :
myStr = handleString(textbox.value) al posto di (textbox.value) ho
inserito (Cliente.value) cioe' il nome del campo

Grazie ancora
Dino


Alessandro Cara

unread,
Jan 19, 2010, 10:10:53 AM1/19/10
to
Dino ha scritto:
>> e cos� anche quando la richiamo???

>> Grazie ancora e scusa per eventuali domande banali
>> Dino- Nascondi testo citato
>>
>> - Mostra testo citato -
>
> Ale ciao.Ho provato sia inserendola in un modulo che come funzione
> normale,ma ...nel primo caso mi da errore mentre nel secondo
> non funziona.Sicuramente sbagliero' io.
Se la inserisci in un modulo e' visibile da tutta la applicazione.
Se la inserisci nel form e' visibile solo all'interno di quel form

>
> NB: La funzione io la richiamo nell'evento del campo "dopo
> aggiornamento" in questo modo :
> myStr = handleString(textbox.value) al posto di (textbox.value) ho
> inserito (Cliente.value) cioe' il nome del campo
L'ho scritta senza testarla e quindi e' possibile che ci sia qualche errore.
Che tipo di errore ti da ed eventualmente dove?
--
ac

Dino

unread,
Jan 19, 2010, 2:22:46 PM1/19/10
to
On 19 Gen, 16:10, Alessandro Cara <alessandro.c...@ay-1anetwork.it>
wrote:
> >> e così anche quando la richiamo???

> >> Grazie ancora e scusa per eventuali domande banali
> >> Dino- Nascondi testo citato
>
> >> - Mostra testo citato -
>
> > Ale ciao.Ho provato sia inserendola in un modulo che come funzione
> > normale,ma ...nel primo caso mi da errore mentre nel secondo
> > non funziona.Sicuramente sbagliero' io.
>
> Se la inserisci in un modulo e' visibile da tutta la applicazione.
> Se la inserisci nel form e' visibile solo all'interno di quel form
>
> > NB: La funzione io la richiamo nell'evento del campo "dopo
> > aggiornamento" in questo modo :
> > myStr = handleString(textbox.value) al posto di (textbox.value) ho
> > inserito (Cliente.value) cioe' il nome del campo
>
> L'ho scritta senza testarla e quindi e' possibile che ci sia qualche errore.
> Che tipo di errore ti da ed eventualmente dove?
> --
> ac- Nascondi testo citato
>
> - Mostra testo citato -

Ciao e grazie per la risposta.Se la provo all'interno del form e la
richiamo nell'evento dopo aggiornamento del campo(inserita così myStr
= handleString(Cliente.Value))
non succede niente come se non avessi inserito nulla.

Tu come hai risolto questa esigenza nei tuoi DB???
Grazie Dino

Alessandro Cara

unread,
Jan 19, 2010, 3:41:52 PM1/19/10
to
>>>> e cos� anche quando la richiamo???

>>>> Grazie ancora e scusa per eventuali domande banali
>>>> Dino- Nascondi testo citato
>>>> - Mostra testo citato -
>>> Ale ciao.Ho provato sia inserendola in un modulo che come funzione
>>> normale,ma ...nel primo caso mi da errore mentre nel secondo
>>> non funziona.Sicuramente sbagliero' io.
>> Se la inserisci in un modulo e' visibile da tutta la applicazione.
>> Se la inserisci nel form e' visibile solo all'interno di quel form
>>
>>> NB: La funzione io la richiamo nell'evento del campo "dopo
>>> aggiornamento" in questo modo :
>>> myStr = handleString(textbox.value) al posto di (textbox.value) ho
>>> inserito (Cliente.value) cioe' il nome del campo
>> L'ho scritta senza testarla e quindi e' possibile che ci sia qualche errore.
>> Che tipo di errore ti da ed eventualmente dove?
>> --
>> ac- Nascondi testo citato
>>
>> - Mostra testo citato -
>
> Ciao e grazie per la risposta.Se la provo all'interno del form e la
> richiamo nell'evento dopo aggiornamento del campo(inserita cos� myStr

> = handleString(Cliente.Value))
> non succede niente come se non avessi inserito nulla.
E come lo verifichi? cosa c'e' dentro myStr?

Data questa stringa:
L'Importanza DI cHIAMARSI ERNESTO
dovrebbe tornare
L'importanza Di chiamarsi Ernesto

Se avessi il tuo problema lo risolverei esattamente come ti ho suggerito
--
ac

Vladimiro Leone

unread,
Jan 19, 2010, 3:55:30 PM1/19/10
to

Ciao Dino,
come non succede nulla?
Probabilmente nella tua form non c'è l'Option Explicit (dichiarazione
obbligatoria delle variabili)
Altrimenti ti uscirebbe l'errore su myStr che tra l'altro non so cos'è
e a cui non voglio mettere becco :-)


>
> Tu come hai risolto questa esigenza nei tuoi DB???

> Grazie Dino- Nascondi testo citato
Ciao Vladimiro


>
> - Mostra testo citato -

Un saluto ad Alessandro.
Ciao Vladimiro.

Geppo

unread,
Jan 19, 2010, 5:16:28 PM1/19/10
to
Ciao Alessandro Cara wrote:
----cut----

> E come lo verifichi? cosa c'e' dentro myStr?
>
> Data questa stringa:
> L'Importanza DI cHIAMARSI ERNESTO
> dovrebbe tornare
> L'importanza Di chiamarsi Ernesto
>
> Se avessi il tuo problema lo risolverei esattamente come ti ho
> suggerito

Mica tanto. Forse non hai letto bene i post di Dino e cosa vuole ottenere.

Dunque riporto testualmente:

>Ciao a tutti vorrei gentilmente in un campo "testo" la prima lettera
>di una frase sempre maiuscola,mentre le rimanenti minuscole.Ovviamente
>se le rimanenti vengono scritte in maiuscolo devono rimanere tali:
>Esempio1:
>Rossi enrico (enrico se' e' minusc deve rimanere tale)
>Esempio2:
>Rossi Enrico (Enrico se' e' maiusc deve rimanere tale).
>Il codice che ho a disposizione (postatomi gentilmente sul nostro NG)
>o mi da le iniziali tutte maiscole o solo la prima maiuscola.

fin qui tutto bene, se non fosse che Dino:

>La seconda soluzione invece va bene al 90%,cioe' se scrico tutto
>minuscolo mi riporta la rima lettera della prima parola in
>maiuscolo.Se scrivo maiuscolo tutte le iniziali delle altre parole le
>lascia maiuscole.L'unico problema si riscontra con il "tutto
>maiuscolo".Se per esempio l'utente scrive tutto maiuscolo invece di
>riportare tutto in minuscolo (tranne la prima lettera della prima
>parola) rimane tutto il maiuscolo.
>Di seguito ti riporto la riga di codiceche ho voluto variare con il
>format ma non funziona.mi riporta tutto in minuscolo.
>Cliente = UCase(Mid(Cliente, 1, 1)) + Mid(Cliente, 2, Format(Len
>(Cliente), "<"))

qua Vladimiro incredulo insiste ma Dino risponde:

>Vladimiro hai proprio ragione (sara' la vecchiaia) avevo copiato
>male.Pero' rimane sempre un problema:
>Se scrivo tuttto in maiuscolo mi rimane tale.Bisognerebbe invece che
>riportasse tutto in minuscolo tranne la
>prima lettera della prima parola.Faccio un esempio banale:

>"GIOVANNI DE REGINA" dovrebbe diventare "Giovanni de regina" (se poi
>voglio la d e la g maiuscola la vado a scrivere).

qui Vladimiro non si capacita e continua con i suggerimenti, ma Dino:

>Vladimiro forse non mi spiego bene.Il codice funziona
>benissimo.Supponiamo pero' che l'utente abbia sbadatamente pigiato il
>maiuscolo permanente (lucchetto) il testo scritto rimane in
>maiuscolo,io voglio(sempre se e' possibile) che ritorni in automatico
>in minuscolo tranne la prima lettera della prima parola.


dopo questo che sto per riportare, Vladimiro resosi conto si arrende e gli
suggerisce la palla di vetro:

>Se scrivo tutto maiuscolo mi riporta tutto a minuscolo tranne la prima


>lettera della prima parola.Pero' se adesso ad esempio scrivo:
>"azienda Rossi Mario" lui la reimposta in "azienda rossi mario" in

>realta' l'altra mia esigenza e' proprio questa.Se il codice trova al
>tre parole con la prima la lettera maiuscola le deve lasciare.

>Spero di essere stato preciso quanto l'ho sei stato tu.

Forse Dino non riesce a spiegarsi bene o io non riesco a capirlo.

Per�, credo che abbia bisogno di codice che interpreti il pensiero
dell'utente e si adegui di conseguenza.

--
Ciao
Geppo

Alessandro Cara

unread,
Jan 20, 2010, 8:27:48 AM1/20/10
to
Geppo ha scritto:
> Perᅵ, credo che abbia bisogno di codice che interpreti il pensiero
> dell'utente e si adegui di conseguenza.
>

Confermo! tutto il post non lo ho letto.
Probabilmente, pero', ha bisogno solo di un piccolo bottone aggiuntivo
(due per farla complicata) che ripristina il valore digitato se la
*correzione* non e' voluta.
Naturalmente il primo carattere maiuscolo va forzato e tenuto conto
della regola del *tutto* maiuscolo (eventuale secondo pulsante, con
eventuale messaggio). Per quato mi riguarda io aggiungerei la regola che
se la una *parola* e' maiuscola andrebbe lasciata cosi'
Tutto cio' probabilmente non e' soddisfacente nella totalita' dei casi,
quale applicazione lo e' mai?, ma sufficientemente adeguata alla richiesta.

--
ac

Dino

unread,
Jan 20, 2010, 2:11:44 PM1/20/10
to
On 20 Gen, 14:27, Alessandro Cara <alessandro.c...@ay-1anetwork.it>
wrote:
> > Però, credo che abbia bisogno di codice che interpreti il pensiero

> > dell'utente e si adegui di conseguenza.
>
> Confermo! tutto il post non lo ho letto.
> Probabilmente, pero', ha bisogno solo di un piccolo bottone aggiuntivo
> (due per farla complicata) che ripristina il valore digitato se la
> *correzione* non e' voluta.
> Naturalmente il primo carattere maiuscolo va forzato e tenuto conto
> della regola del *tutto* maiuscolo (eventuale secondo pulsante, con
> eventuale messaggio). Per quato mi riguarda io aggiungerei la regola che
> se la una *parola* e' maiuscola andrebbe lasciata cosi'
> Tutto cio' probabilmente non e' soddisfacente nella totalita' dei casi,
> quale applicazione lo e' mai?, ma sufficientemente adeguata alla richiesta.
>
> --
> ac- Nascondi testo citato
>
> - Mostra testo citato -

Ciao e grazie per la risposta.Mi e' venuta un'idea che ti sottopongo
per risolvere il problema.

Mi potrebbe andare bene del codice che forzi solo la prima maiuscola
della prima parola e che lasci le altre parole con le iniziali
minuscole o maiuscole a seconda
di come le scrive l'utente.
il codice che fa questo sull'evento dopo aggiornamento del campo in
questione e' il seguente:

Private Sub Cliente_AfterUpdate()
Cliente = Format(Mid(Cliente, 1, 1), ">") & Mid(Cliente, 2, Len
(Cliente) - 1)
end sub

Se poi l'utente sbadatamente dovesse abilitare il "lucchetto" io
imposterei un avviso che le impedisce di scrivere maiuscolo...e il
gioco e' fatto.
Il mio problema e' impostare il codice corretto.Di seguito ti riporto
il lavoro completo come lo vorrei ma come non funziona (parlo
dell'istruzione If).Chiedo quidi
a te di sistemarmelo (sempre gentilmente).

Private Sub Cliente_AfterUpdate()

If Me.Cliente = Format(Cliente, ">") Then
MsgBox "IMPOSSIBILE SCRIVERE TUTTO IN MAIUSCOLO.DISABILITARE IL TASTO
LUCCHETTO O NON PIGIARE LO SHIFT"
Cancel = True
Me.Undo
Cancel = True
End If
Cliente = Format(Mid(Cliente, 1, 1), ">") & Mid(Cliente, 2, Len
(Cliente) - 1)
end sub

Grazie


Dino

unread,
Jan 21, 2010, 3:09:52 AM1/21/10
to
> Grazie- Nascondi testo citato

>
> - Mostra testo citato -

Ciao a tutti e grazie ho risolto con Vladimiro (vedete post
sull'attivazione dello shift e caps lock)
Grazie ancora Dino

0 new messages