Microsoft Excel

Herbers Excel/VBA-Archiv

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

In Tabelle suchen - wie mit einer Suchmaschine | Herbers Excel-Forum


Betrifft: In Tabelle suchen - wie mit einer Suchmaschine von: Mark
Geschrieben am: 03.01.2012 22:04:42


Hallo,

ich möchte gerne eine größere Tabelle nach Suchbegriffen durchforsten. Hier im Beispiel ist die Tabelle kleiner. In einem Textfeld möchte ich den Suchbegriff eingeben, z.B. „Maus“.

Dann möchte ich per Kontrollkästchen die Suchspalte (es muss die gesamte Spalte durchsucht werden) vorgeben. Groß- und Kleinschreibung soll hierbei nicht unterschieden werden.

Die Sucherergebnisse sollen nach dem Klick auf den CommandButton in einer Liste unterhalb der Suchoptionen aufgelistet werden. Im Prinzip soll es wie bei einer Suchmaschine im Internet funktionieren.

Kann mir jemand helfen, wie man das irgendwie in VBA programmieren kann!
Danke für jeden Beitrag!
-Mark-

Zum besseren Verständnis habe ich Datei hochgeladen:

https://www.herber.de/bbs/user/78202.xlsm

  

Betrifft: AW: In Tabelle suchen - wie mit einer Suchmaschine von: Thomas S.
Geschrieben am: 04.01.2012 10:17:46

Ich habe eine komplette Lösung ... war aber viel Arbeit.
Wollen Sie erst in VBA einsteigen oder haben Sie schon Vorkenntnisse?

VG Thomas


  

Betrifft: AW: In Tabelle suchen - wie mit einer Suchmaschine von: Mark
Geschrieben am: 04.01.2012 10:38:25

Hallo,

ich habe vor ein paar Jahren mal etwas mehr mit VBA gemacht. Seitdem leider nicht mehr und bin halt entsprechend aus der Übung. VBA-Code lesen geht eigentlich noch ganz gut. Schreiben oder anpassen nur bis zu einem gewissen Grad.

Wahrscheinlich habe ich meine Frage missverständlich ausgedrückt. Ich möchte nicht dass sich einer stundenlang hinsetzt und den Code programmiert. Vielmehr suche ich Ideen (Bausteine), wie man so etwas realisieren kann.

Gruß
-Mark-


  

Betrifft: AW: In Tabelle suchen - wie mit einer Suchmaschine von: Josef Ehrensberger
Geschrieben am: 04.01.2012 11:06:09


Hallo Mark,

in das Modu von Tabelle "SUCHEN".

' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub CommandButton2_Click()
  Dim rng As Range, rngF As Range, rngRet As Range
  Dim lngIndex As Long, lngRows() As Long
  Dim strFirst As String
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  Redim lngRows(0)
  
  If Range("C5") <> "" Then
    Range("A15").CurrentRegion.Offset(1, 0).Clear
    With Sheets("Archiv")
      If CheckBox1 Then Set rngF = .Columns(1)
      If CheckBox2 Then
        If rngF Is Nothing Then
          Set rngF = .Columns(2)
        Else
          Set rngF = Union(rngF, .Columns(2))
        End If
      End If
      If CheckBox3 Then
        If rngF Is Nothing Then
          Set rngF = .Columns(3)
        Else
          Set rngF = Union(rngF, .Columns(3))
        End If
      End If
      Set rng = rngF.Find(Me.Range("C5"), LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
      If Not rng Is Nothing Then
        strFirst = rng.Address
        Do
          If IsError(Application.Match(rng.Row, lngRows, 0)) Then
            Redim Preserve lngRows(lngIndex)
            lngRows(lngIndex) = rng.Row
            lngIndex = lngIndex + 1
            If rngRet Is Nothing Then
              Set rngRet = .Range(.Cells(rng.Row, 1), .Cells(rng.Row, 3))
            Else
              Set rngRet = Union(rngRet, .Range(.Cells(rng.Row, 1), .Cells(rng.Row, 3)))
            End If
          End If
          Set rng = rngF.FindNext(rng)
        Loop While Not rng Is Nothing And strFirst <> rng.Address
      End If
    End With
    If Not rngRet Is Nothing Then
      rngRet.Copy Me.Range("B16")
      With Me.Range("A16").Resize(lngIndex, 1)
        .Formula = "=ROW(A1)"
        .Value = .Value
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
      End With
    End If
  End If
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "Sub 'CommandButton2_Click'" & vbLf & String(40, "=") & vbLf & vbLf & _
        IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & "Fehlernummer:" & vbTab & _
        .Number & vbLf & vbLf & "Beschreibung:" & vbTab & .Description & vbLf, vbExclamation, "Fehler in Modul - Tabelle3"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
    .DisplayAlerts = True
  End With
  
  Set rng = Nothing
  Set rngF = Nothing
  Set rngRet = Nothing
End Sub






« Gruß Sepp »



  

Betrifft: AW: In Tabelle suchen - wie mit einer Suchmaschine von: Mark
Geschrieben am: 04.01.2012 14:49:41

Hallo Sepp,

der Code funktioniert sehr gut.

Ich denke, ich habe den größten Teil sogar verstanden, jedenfalls kann ich es erweitern (also weitere Checkboxen einbauen) und auf meine Problem übertragen.

Vielen Dank!

Gruss
-Mark-


Beiträge aus den Excel-Beispielen zum Thema "In Tabelle suchen - wie mit einer Suchmaschine"