Tjena Hej Tobbe Tack för svaret fungerar bra. Hej Tackar fungerar men om man ångrar sig och backar tillbaka så fungerar inte funktionen. Mitt förslag. Vilket ger få problem: Den gör så att det blir en stor bokstav i början på ett ord. Men aktiveras först när textrutan förlorat focus. Hej Ok Tobbe jag vidhåller min lösning (envis som en Åsna) Vad händer när man klistrar in text. Hur ska det hanteras? HejFråga om StrConv
Jag vill ha så att det blir en stor bokstav i början på ett ord
i Text1 av typen (change) skriver jag så här
Text1.text=StrConv(text1.text , 3)
fungerade bra men ordet blir spegelvänt.
knepigt ? Sv: Fråga om StrConv
Så här brukar jag göra
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Len(Text1) = 0 Then
Select Case KeyAscii
Case 97 To 122, 224 To 255
KeyAscii = KeyAscii - 32
End Select
End If
End Sub
mvh
SvenSv: Fråga om StrConv
Men det jag skulle vilja göra är att på varje nytt ord så skall börja med en storbokstav.
ex:
Nisse Eriksson
kanske inte går att få den funktionen utan att använda 2 st textboxar?
Mvh TobbeSv: Fråga om StrConv
det skulle man kunna lösa så här om det duger.
Efter varje mellanslag så blir det stor bokstav
Finns kanske någon fallgrop men testa.
Private Sub Text1_KeyPress(KeyAscii As Integer)
Static OldAscii As Integer
If Len(Text1) = 0 Then
Select Case KeyAscii
Case 97 To 122, 224 To 255
KeyAscii = KeyAscii - 32
End Select
End If
If OldAscii = 32 Then
Select Case KeyAscii
Case 97 To 122, 224 To 255
KeyAscii = KeyAscii - 32
End Select
End If
OldAscii = KeyAscii
End Sub
mvh
SvenSv: Fråga om StrConv
Sv: Fråga om StrConv
Private Sub Text1_Validate(Cancel As Boolean)
Text1.Text = StrConv(Text1.Text, vbProperCase)
End SubSv: Fråga om StrConv
Anledning till att ordet blir spegelveänt om du placerar koden i Change eventet. Är på grund av att markörens position flyttas till 0. Du kan lösa det genom at lagra positionen och återställa den:
Private Sub Text1_Change()
Dim SelStart As Long
Dim SelLength As Long
SelStart = Text1.SelStart
SelLength = Text1.SelLength
Text1.Text = StrConv(Text1.Text, vbProperCase)
Text1.SelStart = SelStart
Text1.SelLength = SelLength
End Sub
Men jag tycker det är mer lämpligt att inte förändra texten medans användaren skriver. Tycker det ger ett mer Stabilt intryck att korigera tecken vid validering.Sv: Fråga om StrConv
Ok Tobbe jag vidhåller min lösning (envis som en Åsna)
Vi "bostar" upp lösningen med med en backslash fälla.
Woops fel version i klippbordet återkommer
mvh
SvenSv: Fråga om StrConv
Vi "bostar" upp lösningen med med en backslash fälla.
Så här bör det funka
Private Sub Text1_KeyPress(KeyAscii As Integer)
Static OldAscii As Integer
If Len(Text1) = 0 Then
If KeyAscii > 96 And KeyAscii < 255 Then
KeyAscii = (KeyAscii And 223)
End If ' KeyAscii
End If ' Len
If OldAscii = 32 Then
If KeyAscii > 96 And KeyAscii < 255 Then
KeyAscii = (KeyAscii And 223)
End If ' KeyAscii
End If ' OldAscii
OldAscii = KeyAscii
If KeyAscii = 8 Then OldAscii = 32
End Sub
mvh
SvenSv: Fråga om StrConv
Om man skriver ett mellanslag sedan navigerar med piltangenterna ger det en stor bokstav.
Det är så enkelt att utföra konverteringen i validat. Ser ingen fördel med ditt sätt. Ger bara problem.Sv: Fråga om StrConv
Som alltid är det två sidor på myntet
Men början på frågeställning rörde sig om
en vanlig inmatningsrutin från tangentbordet
då duger mitt förslag alldeles utmärkt.
Blir det fel så är det bara backa och skriva om.
Nog om detta
Tobbe är fri att använda det han tycker funka för honom.
Ha det
Sven