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
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
> 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
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
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
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.
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
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.
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
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.
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
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):
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
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.
Grazie Vladi,mi ha icomunque aiutato moltissimo!!!!(alla prossima)
Dino
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
questa:
sRes = sres & left(ael,1) & lcase(mid(aEl ,2)) & " "
diventa:
sRes = sres & left(ael,1) & lcase(mid(aEl & " ",2))
-
ac
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
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
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
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
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.
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
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
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
Ciao a tutti e grazie ho risolto con Vladimiro (vedete post
sull'attivazione dello shift e caps lock)
Grazie ancora Dino