Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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

VBA mehrfach Suche und Wildcard

VBA mehrfach Suche und Wildcard
Chrissi

Private Sub CommandButton1_Click()
Dim rng As Range
If TextBox1.Text = "" Then
Beep
MsgBox "Sie müssen in der ComboBox einen Suchbegriff auswählen!"
Exit Sub
End If
Set rng = Worksheets("Sender").Columns(3) _
.Find(TextBox1.Text, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
'MsgBox "jawoll"
With Worksheets("Target")
iRow = .Cells(Rows.Count, 1).End(xlUp).row
'If iRow = 1 Then iRow = 2 Else
iRow = iRow + 1
rng.EntireRow.Copy Worksheets("Target").Rows(iRow)
showdata.Show
End With
Else
MsgBox "Suchbegriff wurde nicht gefunden!"
End If
Unload Me
End Sub

Set rng = Worksheets("Sender").Columns(3)
Das Columns sagt doch er soll in den ersten drei Spalten suchen oder? Ich habe aber 11 Spalten zum suchen.
bei mehr als 3 findet er aber keine Werte mehr. Und wenn ich Werte doppelt habe, soll er alle Zeilen in die sheet target kopieren, nur er macht nur die erste gefundene spalte, leider.
und gibt es sone Art Wildcard? also wenn ich zum Beispiel "N24" suche, soll er auch N24 HD finden und nicht nur N24?
Dankeschonmal und liebe Grüße
Chrissi
AW: VBA mehrfach Suche und Wildcard
14.01.2012 21:49:27
Josef

Hallo Chrissi,
ungetsetet!
Private Sub CommandButton1_Click()
  Dim rng As Range, rngF As Range
  Dim strFirst As String, lngRow() As Long, lngIndex As Long
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  If TextBox1.Text = "" Then
    Beep
    MsgBox "Sie müssen in der ComboBox einen Suchbegriff auswählen!"
  Else
    Redim lngRow(0)
    With Worksheets("Sender")
      Set rng = .Range("A:K").Find(What:=TextBox1, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
      If Not rng Is Nothing Then
        strFirst = rng.Address
        Do
          If IsError(Application.Match(rng.Row, lngRow, 0)) Then
            Redim Preserve lngRow(lngIndex)
            lngRow(lngIndex) = rng.Row
            lngIndex = lngIndex + 1
            If rngF Is Nothing Then
              Set rngF = rng.EntireRow
            Else
              Set rngF = Union(rngF, rng.EntireRow)
            End If
          End If
          Set rng = .Range("A:K").FindNext(rng)
        Loop While Not rng Is Nothing And strFirst <> rng.Address
      End If
    End With
  End If
  
  If Not rngF Is Nothing Then
    rngF.Copy Worksheets("Target").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
  Else
    MsgBox "Suchbegriff wurde nicht gefunden!"
  End If
  
  Unload Me
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'CommandButton1_Click'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Userform"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
  
  Set rng = Nothing
  Set rngF = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: VBA mehrfach Suche und Wildcard
14.01.2012 22:16:53
Chrissi
Das ist ja echt super, wo lernt man sowas?!
Kann man in der Formel noch Combox1, 2 etc einfügen. Bzw wenn in textbox1 etwas drin steht UND in combobox1 etwas ausgewählt ist das dann nur die Zeilen kopiert werden?
Das ist echt super von dir und das am stamstag Abend!
AW: VBA mehrfach Suche und Wildcard
14.01.2012 22:20:26
Josef

Hallo Chrissi,
also das ist keine Formel sondern VBA-Code!
Was heißt ComboBox1,2 etc?
Dazu braucht es schon genaue Angaben.
Wo, also in welchen Spalten soll nach dem Text der Comboboxen gesucht werden?
Genaue Übereinstimmung?
Treffer nur wenn Übereinstimmung bei allen Combos, oder mindestens eine Übereinstimmung?

« Gruß Sepp »

Anzeige
AW: VBA mehrfach Suche und Wildcard
14.01.2012 22:31:56
Chrissi
Zur Erklärung: Es handelt sich um eine kleines Datenbankschulprojekt, ich habe mich entschieden alle Transponderdaten vom Astrasatelliten einzupflegen. Darunter zählen Transpondernummer, Frequenz, Sender, Verschlüsslung, Karten-ID, Sprache, Anbieter etc.
Das mit dem Eingabe hat dank Ihrer Hilfe auch super geklappt. Nun würde ich gerne ein Such-Userform haben, wie Sie bereits bestimmt gemerkt haben. Man kann entweder nach Sender suchen, dann werden alle Sender gezeigt, so wie sie es eben programmiert haben. Wenn dazu in der Userform noch zum Beispiel Sprache eingegeben wird, dann alle Sender mit dem Namen und der Sprache, also eine Übereinstimmung aller gegebenen Variablen.
Habe folgende Eingabemöglichkeiten:
Textbox1: Sendername
Textbox2: SenderID
Combobox1: Transponder
Combobox2: Frequenz
Combobox3: Sprache
Combobox4: Anbieter
Combobox5: KartenID
Checkbox1: SDTV
Checkbox2: HDTV
So kann man die Suche dann halt "verfeinern".
Anzeige
AW: VBA mehrfach Suche und Wildcard
14.01.2012 23:07:35
Josef

Hallo Chrissi,
hier im Forum gibt's kein "Sie".
Du musst noch mitteilen, in welchen Spalten sich welche Informationen finden.

« Gruß Sepp »

AW: VBA mehrfach Suche und Wildcard
14.01.2012 23:18:41
Chrissi
Hier ein Screenshot
Userbild
Anzeige
AW: VBA mehrfach Suche und Wildcard
14.01.2012 23:37:56
Josef

Hallo Chrissi,
und ich soll jetzt raten was wohin gehört, oder wie?
Du willst eine Lösung, also wirst du wohl eine ordentliche Beschreibung abgeben können.

« Gruß Sepp »

AW: VBA mehrfach Suche und Wildcard
14.01.2012 23:46:18
Chrissi
Entschuldigung. Ich lade am Besten das Excelfile mal hoch. :(
https://www.herber.de/bbs/user/78453.xlsm
Anzeige
AW: VBA mehrfach Suche und Wildcard
15.01.2012 00:05:15
Josef

Hallo Chrissi,
ganz klar wird die Zuordnung für mich dadurch auch noch nicht, aber wenn du das Prinzip verstehst, wirst du den Rest selber hin bekommen.
Private Sub CommandButton1_Click()
  Dim rng As Range, rngF As Range
  Dim strFirst As String, lngRow() As Long, lngIndex As Long
  Dim lngCalc As Long, bolAdd As Boolean
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  If TextBox1.Text = "" Then
    Beep
    MsgBox "Sie müssen in der ComboBox einen Suchbegriff auswählen!"
  Else
    Redim lngRow(0)
    With Worksheets("Sender")
      Set rng = .Range("A:K").Find(What:=TextBox1, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
      If Not rng Is Nothing Then
        strFirst = rng.Address
        Do
          If IsError(Application.Match(rng.row, lngRow, 0)) Then
            bolAdd = False
            Redim Preserve lngRow(lngIndex)
            lngRow(lngIndex) = rng.row
            lngIndex = lngIndex + 1
            'Zusatzspalten-Check
            
            bolAdd = .Cells(rng.row, 8).Text = TextBox2 Or TextBox2 = ""
            If bolAdd Then bolAdd = .Cells(rng.row, 1).Text = ComboBox1.Text Or ComboBox1.Text = ""
            If bolAdd Then bolAdd = .Cells(rng.row, 2).Text = ComboBox1.Text Or ComboBox1.Text = ""
            If bolAdd Then bolAdd = .Cells(rng.row, 5).Text = ComboBox3.Text Or ComboBox3.Text = ""
            If bolAdd Then bolAdd = .Cells(rng.row, 8).Text = ComboBox5.Text Or ComboBox5.Text = ""
            If bolAdd Then bolAdd = .Cells(rng.row, 4).Text = IIf(CheckBox1, "SDTV", "HDTV") Or _
              (Not CheckBox1 And Not CheckBox2)
            
            If bolAdd Then
              If rngF Is Nothing Then
                Set rngF = rng.EntireRow
              Else
                Set rngF = Union(rngF, rng.EntireRow)
              End If
            End If
          End If
          Set rng = .Range("A:K").FindNext(rng)
        Loop While Not rng Is Nothing And strFirst <> rng.Address
      End If
    End With
  End If
  
  If Not rngF Is Nothing Then
    rngF.Copy Worksheets("Target").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
  Else
    MsgBox "Suchbegriff wurde nicht gefunden!"
  End If
  
  showdata.Show
  Unload Me
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'CommandButton1_Click'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Userform"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
  
  Set rng = Nothing
  Set rngF = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: VBA mehrfach Suche und Wildcard
15.01.2012 11:38:06
Chrissi
Ich danke dir wirklich sehr herzlich für die schnelle Lösung des Problems, eine Sache wäre da nur noch die
ich von vernein falsch angefangen habe, dass alles von Textbox1 abhängt. Kann man das rausnehmen? So das
wenn garnichts eingetragen wird, halt alle Einträge ausgegeben werden, hab schon versucht am Anfang die if Anweisung auszukommentieren, aber funktioniert nicht.
Könntest du mir da noch einmal aushelfen?
Vielen Dank!
AW: VBA mehrfach Suche und Wildcard
15.01.2012 11:38:10
Chrissi
Ich danke dir wirklich sehr herzlich für die schnelle Lösung des Problems, eine Sache wäre da nur noch die
ich von vernein falsch angefangen habe, dass alles von Textbox1 abhängt. Kann man das rausnehmen? So das
wenn garnichts eingetragen wird, halt alle Einträge ausgegeben werden, hab schon versucht am Anfang die if Anweisung auszukommentieren, aber funktioniert nicht.
Könntest du mir da noch einmal aushelfen?
Vielen Dank!
Anzeige
AW: VBA mehrfach Suche und Wildcard
15.01.2012 11:46:24
Josef

Hallo Chrissi,
so?
Private Sub CommandButton1_Click()
  Dim rng As Range, rngF As Range
  Dim strFirst As String, lngRow() As Long, lngIndex As Long
  Dim lngCalc As Long, bolAdd As Boolean
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  Redim lngRow(0)
  With Worksheets("Sender")
    Set rng = .Range("A:K").Find(What:=IIf(TextBox1 <> "", TextBox1, "*"), LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
    If Not rng Is Nothing Then
      strFirst = rng.Address
      Do
        If IsError(Application.Match(rng.row, lngRow, 0)) Then
          bolAdd = False
          Redim Preserve lngRow(lngIndex)
          lngRow(lngIndex) = rng.row
          lngIndex = lngIndex + 1
          'Zusatzspalten-Check
          
          bolAdd = .Cells(rng.row, 8).Text = TextBox2 Or TextBox2 = ""
          If bolAdd Then bolAdd = .Cells(rng.row, 1).Text = ComboBox1.Text Or ComboBox1.Text = ""
          If bolAdd Then bolAdd = .Cells(rng.row, 2).Text = ComboBox1.Text Or ComboBox1.Text = ""
          If bolAdd Then bolAdd = .Cells(rng.row, 5).Text = ComboBox3.Text Or ComboBox3.Text = ""
          If bolAdd Then bolAdd = .Cells(rng.row, 8).Text = ComboBox5.Text Or ComboBox5.Text = ""
          If bolAdd Then bolAdd = .Cells(rng.row, 4).Text = IIf(CheckBox1, "SDTV", "HDTV") Or _
            (Not CheckBox1 And Not CheckBox2)
          
          If bolAdd Then
            If rngF Is Nothing Then
              Set rngF = rng.EntireRow
            Else
              Set rngF = Union(rngF, rng.EntireRow)
            End If
          End If
        End If
        Set rng = .Range("A:K").FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    End If
  End With
  
  
  If Not rngF Is Nothing Then
    rngF.Copy Worksheets("Target").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
  Else
    MsgBox "Suchbegriff wurde nicht gefunden!"
  End If
  
  showdata.Show
  Unload Me
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'CommandButton1_Click'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Userform"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
  
  Set rng = Nothing
  Set rngF = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: VBA mehrfach Suche und Wildcard
15.01.2012 18:26:28
Chrissi
jawoll! Danke dir, eine Sache noch dann ist das abgehakt dank deiner Hilfe und zwar wenn Checkbox3 nicht angeklickt wurde sollen nur Einträge von Spalte "K" mit dem Wert "keine" angezeigt werden. Wenn diese checkbox jedoch markiert dann alle Einträge außer "keine".
AW: VBA mehrfach Suche und Wildcard
15.01.2012 18:45:05
Josef

Hallo Chrissi,
dann füge noch diese Prüfung ein.
If bolAdd Then bolAdd = IIf(CheckBox3, .Cells(rng.Row, 11) = "keine", .Cells(rng.Row, 11) <> "keine")


« Gruß Sepp »

Anzeige
AW: VBA mehrfach Suche und Wildcard
15.01.2012 19:41:37
Chrissi
Super ich danke dir wirklich sehr.
Nun ist mein Projekt fast Fertig.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige