22.09.2016, 13:39
Hallo zusammen,
ich habe mir ein kleines Suchtool geschrieben das mir einen Teilstring in einer Tabelle sucht. In der Zelle daneben wird eine Markierung bei Erfolg gesetzt.
Das Suchtool besteht aus einer Userform und Textboxen für den Suchstring und anderen Angaben die bei erfolgreicher Suche in die Tabelle eingetragen werden sollen.
Die Userform bleibt so lange geöffnet so lange gesucht werden soll....heißt ich will mehrere Suchvorgänge mit unterschiedlichen Suchanfragen starten...ohne dass die Userform neu geöffnet werden muß.
Das funktioniert auch alles bestens. Aber nach erfolgter Suche bleibt der Fokus aber, also die Fundstelle, in der Tabelle markiert. Um das Ganze aber komfortabler zu gestalten soll aber der Fokus/Cursor wieder in die Textbox1 springen damit ich direkt den nächsten Suchbegriff eingeben kann.
Hier mal mein VBA-Code:
Könnt Ihr mir bitte auf die Sprünge helfen wie ich den Fokus wieder auf die Textbox bekomme ohne dass ich mit der Maus hantieren muss?
Vielen Dank für Eure Hilfe!!!
ich habe mir ein kleines Suchtool geschrieben das mir einen Teilstring in einer Tabelle sucht. In der Zelle daneben wird eine Markierung bei Erfolg gesetzt.
Das Suchtool besteht aus einer Userform und Textboxen für den Suchstring und anderen Angaben die bei erfolgreicher Suche in die Tabelle eingetragen werden sollen.
Die Userform bleibt so lange geöffnet so lange gesucht werden soll....heißt ich will mehrere Suchvorgänge mit unterschiedlichen Suchanfragen starten...ohne dass die Userform neu geöffnet werden muß.
Das funktioniert auch alles bestens. Aber nach erfolgter Suche bleibt der Fokus aber, also die Fundstelle, in der Tabelle markiert. Um das Ganze aber komfortabler zu gestalten soll aber der Fokus/Cursor wieder in die Textbox1 springen damit ich direkt den nächsten Suchbegriff eingeben kann.
Hier mal mein VBA-Code:
Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
myTextOffsetCol = TextBox2.Text 'welche Spalte für Markierung
myTextMarkierungszeichen = TextBox3.Text 'Zeichen für Markierung der Fundstelle
myTextHintergrundfarbe = TextBox4.Text 'Farbindex für Hintergrundfarbe
myText = TextBox1.Text 'Suchtext
If KeyCode = vbKeyReturn Then Call FindText
Application.ThisWorkbook.RefreshAll
End Sub
Code:
Public Sub FindText()
Dim ws As Worksheet, Found As Range, rngNm As String
' Dim myText As String, FirstAddress As String, thisLoc As String
Dim FirstAddress As String, thisLoc As String
Dim AddressStr As String, foundNum As Integer
'myText = InputBox("Suchbegriff eintragen - z.B.: xyz123")
If myText = "" Then Exit Sub
With ActiveSheet
Set Found = .UsedRange.Find(what:=myText, LookIn:=xlValues, MatchCase:=False)
If Not Found Is Nothing Then
FirstAddress = Found.Address
Do
foundNum = foundNum + 1
rngNm = .Name
AddressStr = AddressStr & .Name & " " & Found.Address & vbCrLf
thisLoc = rngNm & " " & Found.Address
Sheets(rngNm).Select
Range(Found.Address(RowAbsolute:=False, ColumnAbsolute:=False)).Select
' myFind = MsgBox("Found one """ & myText & """ here!" & vbCr & vbCr & _
' thisLoc, vbInformation + vbOKCancel + vbDefaultButton1, "Your Result!")
If myFind = 2 Then Exit Sub
Set Found = .UsedRange.FindNext(Found)
If myTextMarkierungszeichen <> "" Or myTextOffsetCol <> "" Then
Selection.Cells.Offset(0, myTextOffsetCol).Value = myTextMarkierungszeichen
End If
If myTextHintergrundfarbe <> "" Then
Selection.Interior.ColorIndex = myTextHintergrundfarbe
End If
Loop While Not Found Is Nothing And Found.Address <> FirstAddress
End If
End With
If Len(AddressStr) Then
' MsgBox "Found: """ & myText & """ " & foundNum & " times." & vbCr & _
' AddressStr, vbOKOnly, myText & " found in these cells"
Else:
MsgBox "Unable to find " & myText & " in this workbook.", vbExclamation
End If
Application.ThisWorkbook.RefreshAll
End Sub
Könnt Ihr mir bitte auf die Sprünge helfen wie ich den Fokus wieder auf die Textbox bekomme ohne dass ich mit der Maus hantieren muss?
Vielen Dank für Eure Hilfe!!!