Suchfunktion innerhalb eines Worksheets

Wildcards, AutoFilter
Sub Abfrage1() Ein Modul startet das Formular  (VBA für Excel kennt
  Abfrage.Show keinen FormLoad-Befehl).
  Range("A1").Select Die Zelle A1 des aktiven Arbeitsblattes wird selektiert.
End Sub
Private Sub UserForm_Initialize() Formular "Abfrage" wird initialisiert.
 Box2.Text = ActiveSheet.Range("H3").Value Die TextBoxen erhalten den gespeicherten Inhalt zweier
 Box1.Text = ActiveSheet.Range("H2").Value Worksheet-Zellen.
 Call boxx1
End Sub
Private Sub boxx1() Unterprogramm für einige Steuerelemente.
With Box1
 .SelStart = 0
 .SelLength = Len(.Text) Die TextBox1 erhält den Fokus.
End With
End Sub
Private Sub aktivieren() Etwas umständliche Rückgabe des Fokus an die
 Range("A1").Select "ersten Zellen" des ArbeitsBlattes.
 Range("A2").Select
End Sub
Wenn die erste Textbox den Fokus verliert:
Private Sub Box1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ZLinks$, ZRechts$
On Error Resume Next
With Box1
 If .Text <> "" Then Wenn Textbox nicht leer ist, dann:
  ActiveSheet.Range("H2").Value = .Text - erhält eine Worksheet-Zelle den Inhalt der Textbox.
     ZLinks = Left$(.Text, 1) - das linke Zeichen des Suchwortes wird geprüft.
     ZRechts = Right$(.Text, 1) - das rechte Zeichen des Suchwortes wird geprüft.
   If ZLinks = "*" And ZRechts = "*" Then Wenn bereits Wildcards vorhanden sind, dann:
    .Text = ActiveSheet.Range("H2").Value - schreibe den Inhalt der Worksheet-Zelle zurück in
   Else die Textbox, - andernfalls:
    .Text = "*" & ActiveSheet.Range("H2").Value & "*" - füge dem Suchbegriff zwei Wildcards hinzu.
   End If
 End If
.SelStart = 0 Beim Verlassen der ersten Textbox wird dieser der
End With Fokus genommen.
End Sub
Private Sub Box2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ZLinks$, ZRechts$, a$, b$, f%
On Error Resume Next
If Box1.Value = "" Then Wenn Textbox 1 nicht leer ist, dann:
 Box1.SetFocus - Rückkehr zu Textbox 1.
Else
 With Box2
 If .Text <> "" Then Wenn Textbox 2 nicht leer ist, dann:
  ActiveSheet.Range("H3").Value = .Text - erhält eine Worksheet-Zelle den Inhalt der Textbox.
     ZLinks = Left$(.Text, 1) - das linke Zeichen des Suchwortes wird geprüft.
     ZRechts = Right$(.Text, 1) - das rechte Zeichen des Suchwortes wird geprüft.
   If ZLinks = "*" And ZRechts = "*" Then Wenn bereits Wildcards vorhanden sind, dann:
    .Text = ActiveSheet.Range("H3").Value - schreibe den Inhalt der Worksheet-Zelle zurück in
   Else die Textbox, - andernfalls:
    .Text = "*" & ActiveSheet.Range("H3").Value & "*" - füge dem Suchbegriff zwei Wildcards hinzu.
   End If
 Else
  ActiveSheet.Range("H3").Value = ""
 End If
 Selection.Autofilter AutoFilter wird aktiviert.
  a = Box1.Text
  b = .Text
  If optDeutsch.Value = True Then f = 1
  If optEnglish.Value = True Then f = 2
  If optRoman.Value = True Then f = 3
  If optKapitel.Value = False Then Fehler abfangen.
   If Len(a) And Len(b) <> 0 Then Selection.Autofilter Field:=f, _
    Criteria1:=a, Operator:=xlOr, Criteria2:=b
   If Len(b) = 0 Then Selection.Autofilter Field:=f, Criteria1:=a
   If Len(a) = 0 Then Box1.SetFocus: Exit Sub
   Call aktivieren
   End
  Else
   Exit Sub Nach Verlassen der zweiten Textbox wird das Programm
  End If ausgeführt (Suchen mit Autofilter in gewünschter Spalte).
 End With Ein CommandButton ist daher nicht mehr notwendig.
End If
End Sub
Private Sub optKapitel_Click() Hier werden die KapitelKöpfe gesucht.
Dim a$, f%
 Box2.Text = ""
 Box1.Text = "*"
 Selection.Autofilter
 f = 6
 a = Box1.Text
 Selection.Autofilter Field:=f, Criteria1:=a
 Call aktivieren
End Sub
Private Sub cmdEnde_Click() Beenden des Programms.
 Selection.Autofilter
 Unload Me
 Call aktivieren
End Sub
Private Sub cmdRoLeer_Click() In Spalte RO leere Zellen suchen.
Dim f%, a$, b$
 Box2.Text = ""
 Box1.Text = ""
 Selection.Autofilter
 f = 3
 a = Box1.Text
 b = Box2.Text
 Selection.Autofilter Field:=f, Criteria1:=a
 Call aktivieren
 End
End Sub
Private Sub cmdMappen_Click() Zwischen ArbeitsMappen umschalten.
 ActiveWindow.ActivateNext
End Sub
Private Sub cmdLevel_Click() Level suchen.
Dim x$, a$, f%
 x = InputBox("Welchen Level suchen Sie?")
 If x <> "" Then Selection.Autofilter
 f = 4
 a = x
 Selection.Autofilter Field:=f, Criteria1:=a
 Call aktivieren
 End
End Sub
Unterprogramm für alle Steuerelemente.
Private Sub entladen(ByVal KeyAscii As MSForms.ReturnInteger)
 If KeyAscii = 27 Then Unload Me  27 = Esc-Taste
 If KeyAscii = 2 Then    2 = Strg + b  (beenden)
  Selection.Autofilter
  Unload Me
 End If
End Sub
Private Sub cmdSortier_Click() Sortiert das Arbeitsblatt (zuerst Spalte D, dann E).
 Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("E2"), Order2:=xlAscending, _
   Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 Call aktivieren
 End
End Sub
Private Sub UserForm_Terminate() Zwei Worksheet-Zellen erhalten den Inhalt der beiden
  ActiveSheet.Range("H2").Value = Box1.Text TextBoxen, wenn das Programm beendet wird.
  ActiveSheet.Range("H3").Value = Box2.Text
End Sub
Private Sub Butt1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Call entladen(ByVal KeyAscii) Call Entladen gilt auch für alle anderen Steuerelemente.
End Sub
Private Sub Opt1_Click()
  Call boxx1 Call boxx1 gilt auch für alle anderen OptionButton.
  Box1.SetFocus
End Sub
Diese Prozedur kopiert den Inhalt aller Arbeitsblätter auf ein neues Blatt:
Private Sub Kopieren()
  anzahl = ActiveWorkbook.Worksheets.Count Stellt die Menge der ArbeitsBlätter fest.
  ActiveWorkbook.Worksheets.Add Fügt ein neues ArbeitsBlatt hinzu.
  ActiveSheet.Name = "Gesamt" Vergibt Namen für neues Arbeitsblatt.
  For i = 1 To anzahl + 1 Durchläuft alle Arbeitsblätter (um zu kopieren).
    Worksheets(i).Activate Aktiviert ein ArbeitsBlatt nach dem anderen.
      If ActiveSheet.Name = "Gesamt" Then GoTo 10 Wenn letztes Blatt erreicht ist, GeheZu Zeile 10.
    ActiveCell.CurrentRegion.Select Wählt Bereiche aus.
    Selection.Copy Kopiert gewählten Bereich.
    Worksheets("Gesamt").Select Wählt neues ArbeitsBlatt aus.
    ActiveSheet.Paste Fügt Werte in neues ArbeitsBlatt ein.
    ActiveCell.CurrentRegion.Select Wählt Bereich aus.
    z = Selection.Rows.Count Zählt die besetzten Zeilen.
    Cells(z + 1, 1).Activate Erweitert den Bereich, um Kopiertes dranzuhängen.
    10
  Next Beendet die Programmschleife.
  Range("a1").Select Geht zur Zelle A1.
  Abfrage.Show Startet das Formular Abfrage.
End Sub
.

 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info