Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Datensatz suchen | Herbers Excel-Forum


Betrifft: Datensatz suchen von: ing.grohn
Geschrieben am: 03.02.2010 14:25:59

Hallo Forum,

mit folgender Routine such ich Datensätze:

Sub DatenSatzSuchen(Taste As String)
Dim Laenge As Integer
Dim Posi As Integer
Dim Zeile As String
Dim Erst As Integer
Dim Name As String
Dim frm2 As Object

Set frm2 = UserForm2
TestDateiName
Windows("Jutta-Adressen").Activate
Sheets("Tabelle1").Select
UserFormSpeichern
With frm2
    
       
    If Name <> .TextBox15.Value Then
     On Error GoTo fehler
      If Taste = "pgup" Then
        Cells.Find(What:=.TextBox15.Value, After:=ActiveCell, LookIn:=xlFormulas, _
           LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
           MatchCase:=False, SearchFormat:=False).Activate
           Name = .TextBox15.Value
      ElseIf Taste = "pgdn" Then
        Cells.Find(What:=.TextBox15.Value, After:=ActiveCell, LookIn:=xlFormulas, _
           LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
           MatchCase:=False, SearchFormat:=False).Activate
           Name = .TextBox15.Value
    ElseIf Taste = "enter" Then
        Cells.Find(What:=.TextBox15.Value, After:=ActiveCell, LookIn:=xlFormulas, _
           LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
           MatchCase:=False, SearchFormat:=False).Activate
           Name = .TextBox15.Value

      End If
    Else
        Cells.FindNext(After:=ActiveCell).Activate
    End If
    
    Zeile = ActiveCell.Address
    Posi = InStr(2, Zeile, "$")
    Laenge = Len(Zeile)
    Zeile = Right(Zeile, Laenge - Posi)
    
    .TextBox1.Value = Range("A" + Zeile).Value 'ActiveCell.Offset(0, -1).Value
    .TextBox2.Value = Range("C" + Zeile).Value 'ActiveCell.Offset(0, 1).Value
      .
      .
     .TextBox22.Value = Range("AE" + Zeile).Value
    .TextBox23.Value = Range("AF" + Zeile).Value
    .TextBox24.Value = Range("AG" + Zeile).Value
    Exit Sub
fehler:
    MsgBox "Ein Datensatz " & .TextBox15.Value & " konnte nicht gefunden werden"
    
    End With

End Sub
funktioniert auch so wie ich will (jedenfalls bisher). Was bisher ein Vorteil war, nämlich dass der gesamte Satz durchsucht wurde, ist jetzt nicht mehr gut.
Was muß ich machen, damit die Suche auf z.B. auf die ersten 6 Spalten begrenzt ist?
Eine Antoert wäre sehr nett.
Mit freundlichen Grüßen
Albrecht

  

Betrifft: AW: Datensatz suchen von: Josef Ehrensberger
Geschrieben am: 03.02.2010 14:46:06

Hallo ALbrecht,


schreibe statt "Cells.Find(What:=....", "Range("A:F").Find(What:=....".

Warum du allerdings dreimal die gleiche Prozedur in dem If-ElseIf-Then konstruckt aufrufst, verstehe ich nicht.

Das kann man auch so schreiben "If Taste = "pgup" Or Taste = "pgdn" Or Taste = "enter" Then"




Gruß Sepp



  

Betrifft: AW: Datensatz suchen von: ing.grohn
Geschrieben am: 03.02.2010 17:57:48

Hallo Sepp,
vielen Dank für die Hilfe, Dein warum..? ist nur zum Teil berechtigt aber im Grunde richtig:
Ich habs jetzt verkürzt: PGDN und Enter sind zusammen, PGUP für sich: wegen SearchDirection:=xlPrevious, und SearchDirection:=xlNext
Trotzdem hats sehr geholfen
(übrigens, die Suchroutine stammt aus 2002 (ungefähr), damals hatte ich großen Respekt vor alles was objektorientiert ist)
viele Grüße
Albrecht


Beiträge aus den Excel-Beispielen zum Thema "Datensatz suchen"