Ett problem som jag har kommit till Jag slängde ihop en funktion för detta lite hastigt... Hej... >Men om jag rensar rutan så får jag ett felmeddelande! Hej Sven, testa vad som händer om du börjar använda piltangenterna och navigera...=) Om jag skriver in 2tecken så är det okej Private Sub Text1_Change() Jag har ett formulär som endast innehåller Text1 och denna koden, då grupperas texten när rutan avmarkeras... Testa det och berätta om det fungerar eller inte, får du inte ordning på det får du försöka förklara nogrannare hur felet uppstår och visa hur du använder koden... Hej JohanD Måste koden köras i change? I sådana fall måste koden göras om lite så att markören hamnar rätt... Sven, jag menade om du sätter markören någon annastans än i slutet av texten... Ett nytt försök... Hej Om man dessutom lägger det i en separat funktion... Igen till JohanDMellanrum
När jag skrivit in hex tecken i text rutan 16st
Då vill jag att det ska bli ett mellanrum automatiskt
1111111111111111 ska bli 11 11 11 11 11 11 11 11
SörenSv: Mellanrum
<code>
Function gruppera(text As String) As String
Dim a As String, b As Integer
a = Replace(text, " ", "")
If Len(a) > 0 Then
For b = 1 To Int((Len(a) - 1) / 2)
gruppera = gruppera & Mid(a, (b - 1) * 2 + 1, 2) & " "
Next
gruppera = gruppera & Mid(a, Int((Len(a) - 1) / 2) * 2 + 1, 2)
End If
End Function
'Använd såhär, lämpligtvis i validate-händelsen:
Text1 = gruppera(Text1)
</code>
/JohanSv: Mellanrum
alltså är det bara två tecken i varje "grupp"?
Så fall kan du använda en for-next slinga och mid för att få fram när det ska vara mellanslag.(" ").
Vill du ha ett kod exemple eller förklara bättre om jag fattade fel, så skriv det bara =) // R-mus
Attans nån kom förre med svar =)
Johan, fin funktion... lite onödigt krånglig bara =), tänk på att personen som frågar ska fatta vad det är som händer =) // R-musSv: Mellanrum
Jag vet, därför har jag redan ändrat det (antar att du läste inlägget innan jag ändrade det...)
/JohanSv: Mellanrum
Fritt ur minnet nåt sånt här skulle du kunna
bygga på.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Len(Text1.Text) Mod 3 = 0 Then KeyAscii = 32
End Sub
mvh
SvenSv: Mellanrum
/JohanSv: Mellanrum
När man skriver flera tecken så hamnar dom före det första...Sv: Mellanrum
Text1 = gruppera(Text1)
End Sub
Function gruppera(text As String) As String
Dim a As String, b As Integer
a = Replace(text, " ", "")
If Len(a) > 0 Then
For b = 1 To Int((Len(a) - 1) / 2)
gruppera = gruppera & Mid(a, (b - 1) * 2 + 1, 2) & " "
Next
gruppera = gruppera & Mid(a, Int((Len(a) - 1) / 2) * 2 + 1, 2)
End If
End Function
Skriver jag 11 sedan 22 och 33
Så blir resultatet det här 33 21 12Sv: Mellanrum
/Johan
Function gruppera(text As String) As String
Dim a As String, b As Integer
a = Replace(text, " ", "")
If Len(a) > 0 Then
For b = 1 To Int((Len(a) - 1) / 2)
gruppera = gruppera & Mid(a, (b - 1) * 2 + 1, 2) & " "
Next
gruppera = gruppera & Mid(a, Int((Len(a) - 1) / 2) * 2 + 1, 2)
End If
End Function
Private Sub Text1_Validate(Cancel As Boolean)
Text1 = gruppera(Text1)
End SubSv: Mellanrum
Ang Piltangenter - Navigera
Que ?? Piltangenter har ingen AsciiCode
ha det
SvenSv: Mellanrum
/JohanSv: Mellanrum
/JohanSv: Mellanrum
<code>
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim a As String, b As Integer, pos As Integer
a = Replace(Text1, " ", "")
pos = Text1.SelStart - (Len(Left(Text1, Text1.SelStart)) - Len(Replace(Left(Text1, Text1.SelStart), " ", "")))
If Len(a) > 0 Then
Text1 = ""
For b = 1 To Int((Len(a) - 1) / 2)
Text1 = Text1 & Mid(a, (b - 1) * 2 + 1, 2) & " "
Next
Text1 = Text1 & Mid(a, Int((Len(a) - 1) / 2) * 2 + 1, 2)
If pos > 0 Then
Text1.SelStart = pos + (Int((pos - 1) / 2))
End If
End If
End Sub
</code>
/JohanSv: Mellanrum
Change tycker jag definitivt inte man skall använd
Då hamnar man lätt i den binära rymden.
tycker "Gubben" mot strömmen
SvenSv: Mellanrum
<code>
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Gruppera Text1
End Sub
Sub Gruppera(txtBox As TextBox)
Dim a As String, b As Integer, pos As Integer
a = Replace(txtBox, " ", "")
pos = txtBox.SelStart - (Len(Left(txtBox, txtBox.SelStart)) - Len(Replace(Left(txtBox, txtBox.SelStart), " ", "")))
If Len(a) > 0 Then
txtBox = ""
For b = 1 To Int((Len(a) - 1) / 2)
txtBox = txtBox & Mid(a, (b - 1) * 2 + 1, 2) & " "
Next
txtBox = txtBox & Mid(a, Int((Len(a) - 1) / 2) * 2 + 1, 2)
If pos > 0 Then
txtBox.SelStart = pos + (Int((pos - 1) / 2))
End If
End If
End Sub
</code>
Riktigt coolt om jag får säga det själv...;)
/JohanSv: Mellanrum
>Sven, jag menade om du sätter markören någon annastans än i slutet av texten...
"Tänkte inte på de" ;-)
DS