Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inputbox suchfunktion

Inputbox suchfunktion
Hans
Hallo.
Ich würde gerne in Excel über eine Inputbox einen oder mehrere Einträge in z.B. Spalte K bzw. der ganzen Tabelle suchen und alle Zeilen wo dieser Wert in Spalte K o. Tabelle vorkommt in ein neues Tabellenblatt bzw. Excel Sheet mit gleicher Formatierung einfügen.
Ist das möglich?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Inputbox suchfunktion
12.05.2011 23:22:17
Mustafa
Hallo Hans,
So vielleicht :

Option Explicit
Sub SuchenUndKopieren()
Dim strEingabe As String
Dim Bereich As Range
Dim Zelle As Range
Dim lngletzte As Long
With Worksheets("Tabelle1")                                                 'Tabellennamen  _
eventeull anpassen
Set Bereich = .Range(.Cells(2, 11), .Cells(Rows.Count, 11).End(xlUp))   'Die 11 steht für  _
Spalte K
End With
strEingabe = InputBox("Bitte Suchbegriff eingeben", "Suchen")
For Each Zelle In Bereich
If Zelle.Value = strEingabe Then
lngletzte = Worksheets("Tabelle2").Cells(Rows.Count, 11).End(xlUp).Row
Zelle.EntireRow.Copy Destination:=Worksheets("Tabelle2").Cells(lngletzte, 1).Offset(1,  _
0)   'Tabellennamen eventuell anpassen
End If
Next
End Sub
Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.
Anzeige
AW: Inputbox suchfunktion
13.05.2011 13:52:35
Hans
Hallo Mustafa.
Gruß zurück in die Domstadt Köln!
Dein Code funktioniert echt super! Vielen Dank.
Wie könnte ich es den anpassen das er nicht nur in Spalte K sucht sondern in der ganzen Tabelle?
Und wäre es möglich eine neue Excel Datei zu öffnen und die Daten dort einzutragen?
Danke nochmals.
MfG.: Hans
AW: Inputbox suchfunktion
13.05.2011 14:13:17
Hans
Hallo Mustafa.
Nächstes Problem.
In der zelle steht z.B. Huerbel, Hans, EES/PP
Mit deiner Suchfunktion muß ich jetzt genau so in die Inputbox eingeben.
Besser währe wenn man nur z.B. huerbel oder hans oder so suchen könnte.
Des weiteren wäre es cool wenn er nichts findet eine Messagebox zu öffnen die sagt suche ergab keine Treffer.
Danke nochmals.
LG Hans.
Anzeige
Frage noch offen
13.05.2011 23:00:19
Mustafa
Hallo Hans,
meine Kenntnisse reichen leider auch nur soweit, darum lass ich die Frage noch offen damit jemand anderer eventuell noch einmal reinschaut und dir behilflich sein kann.
Gruß aus der Domstadt Köln.
AW: Frage noch offen
15.05.2011 08:36:43
Josef

Hallo Mustafa,
wenn du ganze Spalten markierst, wird in diesen gesucht, sonst in der gesamten Tabelle.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub Mustafa()
  Dim rng As Range, rngSearch As Range, rngFound As Range
  Dim objWB As Workbook
  Dim strFirst As String, strSearch As String
  Dim lngRows() As Long, lngIndex As Long
  strSearch = InputBox("Bitte Suchbegriff eingeben:", "Suchen")
  Redim lngRows(0)
  If strSearch <> "" Then
    With ActiveSheet
      If Selection.Rows.Count = .Rows.Count Then
        Set rng = Selection
      Else
        Set rng = .UsedRange
      End If
    End With
    
    Set rngSearch = rng.Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
    
    If Not rngSearch Is Nothing Then
      strFirst = rngSearch.Address
      Do
        If IsError(Application.Match(rngSearch.Row, lngRows, 0)) Then
          Redim Preserve lngRows(lngIndex)
          lngRows(lngIndex) = rngSearch.Row
          lngIndex = lngIndex + 1
          
          If rngFound Is Nothing Then
            Set rngFound = rngSearch.EntireRow
          Else
            Set rngFound = Union(rngFound, rngSearch.EntireRow)
          End If
        End If
        
        Set rngSearch = rng.FindNext(rngSearch)
        
      Loop While Not rngSearch Is Nothing And strFirst <> rngSearch.Address
    End If
    
    If Not rngFound Is Nothing Then
      Set objWB = Workbooks.Add(xlWBATWorksheet)
      rngFound.Copy objWB.Sheets(1).Cells(1, 1)
      objWB.Activate
    End If
  End If
  Set rng = Nothing
  Set rngSearch = Nothing
  Set rngFound = Nothing
  Set objWB = Nothing
End Sub



« Gruß Sepp »

Anzeige
OT Josef
15.05.2011 21:05:35
Mustafa
Hallo Josef,
das mit der Suche wäre nicht das Problem für mich gewesen, sondern das schreiben in eine neue Datei.
Trotzdem danke ich dir für die Erleuterung.
Gruß aus der Domstadt Köln.
AW: Frage noch offen
16.05.2011 12:03:48
Hans
Hallo Mustafa und Josef.
Danke für die schnelle und gute Antwort!
Könnte man den auch ein bestimmtes Excel Sheet aufmachen und dort die Werte in Zeile 2 erst eintragen?
Dann könnte ich mir nämlich in diesem Sheet schon die erste Zeile mit Benennung und so schon vorbereiten!
Vielen Dank schonmal im voraus.
LG Hans.
AW: Frage noch offen
16.05.2011 18:02:37
Josef

Hallo Hans,
Kommentare beachten!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub Mustafa()
  Dim rng As Range, rngSearch As Range, rngFound As Range
  Dim objWB As Workbook
  Dim strFirst As String, strSearch As String
  Dim lngRows() As Long, lngIndex As Long
  Dim strWorkBook As String
  strWorkBook = "Pfad und Name deiner Bestimmten.xls" 'Anpassen!
  strSearch = InputBox("Bitte Suchbegriff eingeben:", "Suchen")
  Redim lngRows(0)
  If strSearch <> "" Then
    With ActiveSheet
      If Selection.Rows.Count = .Rows.Count Then
        Set rng = Selection
      Else
        Set rng = .UsedRange
      End If
    End With
    
    Set rngSearch = rng.Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
    
    If Not rngSearch Is Nothing Then
      strFirst = rngSearch.Address
      Do
        If IsError(Application.Match(rngSearch.Row, lngRows, 0)) Then
          Redim Preserve lngRows(lngIndex)
          lngRows(lngIndex) = rngSearch.Row
          lngIndex = lngIndex + 1
          
          If rngFound Is Nothing Then
            Set rngFound = rngSearch.EntireRow
          Else
            Set rngFound = Union(rngFound, rngSearch.EntireRow)
          End If
        End If
        
        Set rngSearch = rng.FindNext(rngSearch)
        
      Loop While Not rngSearch Is Nothing And strFirst <> rngSearch.Address
    End If
    
    If Not rngFound Is Nothing Then
      Set objWB = Workbooks.Open(strWorkBook)
      With objWB.Sheets(1) 'evtl. Tabellenname angeben! Z.B.: .Sheets("Tabelle1")
        .Cells(2, 1).Resize(.UsedRange.Rows.Count - 1, .UsedRange.Columns.Count).Clear
        rngFound.Copy .Cells(2, 1)
      End With
      objWB.Activate
    Else
      MsgBox "Nix gefunden!"
    End If
  End If
  Set rng = Nothing
  Set rngSearch = Nothing
  Set rngFound = Nothing
  Set objWB = Nothing
End Sub



« Gruß Sepp »

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige