10. marts 2006 - 10:21Der er
12 kommentarer og 1 løsning
Dynamisk søgning i TekstBox
Jeg har en tekstboks hvor man skal skrive kundenavn og koden skal køre på keyPress_event, så uanset hvordan brugeren taster oplysningerne, så vil det første bokstav i navn, mellemnavn, efternavn osv. altid stå med stort og hvis det er et A/S stor det også med stort. Eks. Navn Mellemnavn Efternavn A/S eller Bart Simsons A/S Jeg har tænkt på select case metoden og hvis "mellemrum" eller "/" er blevet påvirket så skal næste bokstav skrives med STORT og derefter med små bokstaver. Håber der er nogen der kan hjælpe mig.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Dim tt(255), uC As Boolean Private Sub TextBox1_Change() Dim ix, dynaS As String ix = Len(TextBox1)
If Len(TextBox1) > 0 Then If Len(TextBox1) > 1 Then If Mid(TextBox1, Len(TextBox1) - 1, 1) = " " Then uC = True Else uC = False End If
If Len(TextBox1) > 2 Then If LCase(Right(TextBox1, 3)) = "a/s" Then uC = True End If End If Else If Len(TextBox1) = 1 Then uC = True Else uC = False End If End If
If uC = True Then tt(ix) = UCase(Mid(TextBox1, ix, 1)) Else tt(ix) = LCase(Mid(TextBox1, ix, 1)) End If
dynaS = "" For f = 1 To ix dynaS = dynaS + tt(f) Next f
TextBox1.Text = dynaS End If End Sub Private Sub UserForm_activate() Dim f For f = 0 To 255 tt(f) = "" Next f End Sub
Det spiller ikke!!! Dim tt(255), uC As Boolean 'Står udenfor SUB??? og tt skal vel ikke være Boolean og i denne her... Private Sub UserForm_activate() Dim f ' as ??? og tt as ??? Jeg formoder det er Integer??? For f = 0 To 255 tt(f) = "" Next f End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim I As Integer, str As String, A As String str = "" If KeyAscii = 13 Then For I = 1 To Len(Text1.Text) If I = 1 Then A = UCase(Left(Text1.Text, 1)) Else A = Mid(Text1.Text, I, 1) End If If I > 1 Then If Mid(Text1.Text, I - 1, 1) = " " Or Mid(Text1.Text, I - 1, 1) = "/" Then A = UCase(Mid(Text1.Text, I, 1)) End If End If str = str & A Next Text1.Text = str End If End Sub
Hej kabbak Selve koden virker, men som du selv siger, så fanger den ikke hvis man bruger "Backspace" Tror du at du kan tage højde for dette??? Måske med select case hvor man spørger til hvor lang strengen er og går en tilbage. Hvis det er en tom plads " " ellser slash "/" så skal der skrives med stort ellers skal der skrives med småt???
Så kan der også tages højde for brugen af "backspace" med select case
Select Case KeyAscii Case 8 If Len(Text1.Text) = 0 Then Stor = True End If
If Not Text1.Text = "" Then If InStr(1, Text1.Text, " ") <> 0 Then Stor = True Exit Sub Else Stor = False If InStr(1, Text1.Text, "/") <> 0 Then Stor = True Else Stor = False End If End If End If End Select
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.