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 Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Suchmaschine über VBA

Betrifft: Suchmaschine über VBA von: Janine Demski
Geschrieben am: 27.11.2020 21:13:43

Hallo!

Ich habe eine Tabelle (Anwesenheit des Personals).

In dem Ersten Blatt steht



A5 B5 C5 ......................................................viele weitere Daten................................ VH5

DG Name Vorname ................................................................................................................... E-Mail

H Schmidt Maik ................................................................................................................... a@web.de

OF Müller Fred ................................................................................................................... b@gmail.com

OSG Zonk Lio .................................................................................................................... c@web.de



usw.

nun möchte ich auf einem separatem Blatt in der Datei eine Suchmaschiene erstellen.

Name Vorname DG (hier möchte ich den gesuchten Namen eingeben und den Vornamen und DG nur ausfüllen wenn Name zweimal auftaucht - entweder Vorname oder DG eingeben)





und hier stehen dann alle Daten die ich suche

Name ........................... Besoldung ........................

Vorname ........................... Kostenstelle ..........................

DG ............................

Adresse ............................ und noch ein paar Sachen





Hoffe ihr versteht was ich meine. Mit einem normalen =SVERWEIS in excel funktioniert es leider nicht.

Könnt ihr mir helfen wie ich dafür eine VBA erstellen kann?

(Über SVERWEIS in Excel habe ich 3 Probleme:
1. meine Daten werden nur ab Spalte 2 wiedergegeben
2. ich kann mir nicht aussuchen welches der drei Suchkriterien mir vorliegt (manchmal habe ich zb nur den Vornamen)
3. Sobald ein Name zweimal vorkommt, bekomme ich nur die Daten zu dem zuerst gefunden)

Betrifft: AW: Suchmaschine über VBA
von: fcs
Geschrieben am: 28.11.2020 09:13:13

Hallo Janine,

ich hab dir etwas VBA-basiertes zur Unterstützung der Suche per Userform erstellt.

Das Userform wird per Doppelklick auf bestimmte Zellen im 2. Tabellenblatt angezeigt (sind hellgrün gefüllt).
Während der Eingabe der Suchbegriffe in die Textboxen werden die Treffer in einer Listbox angezeigt.
Bei nur 1 Treffer oder Anklicken eines Namens in der Listbox wird die zugehörige Zeilennummer in Zelle B1 eingetragen und das Userform ausgeblendet.

Die gesuchten Werte in der 2. Tabelle werden per Funktion INDEX berechnet.

Link zur Beispieldatei: https://www.herber.de/bbs/user/141899.xlsm

Das Userform kannst du im VBA-Editor per Drag&Drop in deine Datei kopieren. Den Code unter Tabelle2 musst du markieren, kopieren und in deiner Datei unter dem entsprechenden Tabellenblatt-Modul in deiner Datei einfügen.
Zum Schluß musst dann ggf. im Code noch die Zelladressen anpassen, bei denen bei Doppelklick das Userform angezeigt werden soll und die Zelle in die Zeilennummer eingetragen werden soll.

LG
Franz

Betrifft: AW: Suchmaschine über VBA
von: Janine Demski
Geschrieben am: 28.11.2020 11:24:47

Hallo Franz! Danke für deine Bemühungen und deine Hilfe! Es klappt soweit alles!
Nur habe ich jetzt folgendes Problem. Bei Doppelklick öffnet er mir die Suchmaske - Top! und er füllt mir alle Namen ein - Top! und wenn ich auf den gewünschten Namen klicke, dann schließt er die Maske wieder und befüllt alles was ich brauche - doppel Top!!!!
ABER, wenn ich in der Suchmaske etwas eingeben möchte, dann öffnet er den Code und Meldet mir folgenden Fehler
Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden.

Weißt du was ich falsch gemacht habe? Ich finde den Fehler einfach nicht :(

Betrifft: AW: Suchmaschine über VBA
von: fcs
Geschrieben am: 28.11.2020 13:18:35

Hallo Janine,

du verwendest mit Excel Version 16.0 ja die gleiche Version wie ich. Da ist es jetzt schwierig das Problem einzugrenzen.

1. Versuch:
Prüfe bei geöffneter Datei mal im VBA-Editor unter Menü Extras --> Verweise die Verweise.
Das sollte mindestens so aussehen, dass die markierten Verweise auch bei dir als aktiv markiert sind.



Manchmal - speziell wenn man zwischen älteren und neuen Versionen von Excel wechselt - dann stimmen die Verweise nicht mehr und man muss sie neu setzen.

2. Versuch
manchmal - auch bei Wechsel zwischen Excel-Versionen- funktionieren nicht. Hier hilft es, wenn man vor die Excel-VBA-Funktionen im Code jeweils "VBA." einfügt. Dann funktioniert es wieder.
Hier müsstest du das Makro, das nach Eingabe in die Text-Boxen gestartet wird wie folgt anpassen.

Viel Glück bei der Fehlersuche
Franz
Private Sub prcUpdateListboxAuswahl()
  Dim lngZeile As Long, Spalte As Long
  Dim sDG As String, sName As String, sVorname As String
  Dim AnzTreffer As Long
  
  mbolListboxExit = True
  
  sDG = LCase(Me.TextBox_DG)
  sName = LCase(Me.TextBoxName)
  sVorname = LCase(Me.TextBoxVorname)
    
  If sDG & sName & sVorname = "" Then
      Me.ListBox1.List = marrAlle
      Me.Label_gefunden.Visible = False
  Else
      'Anzahl der Treffer ermitteln
      AnzTreffer = 0
      For lngZeile = LBound(marrAlle, 1) To UBound(marrAlle, 1)
        If (VBA.Left(LCase(marrAlle(lngZeile, 1)), VBA.Len(sDG)) = sDG Or sDG = "") _
            And (VBA.Left(LCase(marrAlle(lngZeile, 2)), VBA.Len(sName)) = sName Or sName = "")  _
_
            And (VBA.Left(LCase(marrAlle(lngZeile, 3)), VBA.Len(sVorname)) = sVorname Or  _
sVorname = "") Then
          AnzTreffer = AnzTreffer + 1
        End If
      Next
      
      If AnzTreffer > 0 Then
        'Auswahlliste für Listbox mit Teffern füllen
        ReDim marrFilter(1 To AnzTreffer, 1 To UBound(marrAlle, 2))
        AnzTreffer = 0
        For lngZeile = LBound(marrAlle, 1) To UBound(marrAlle, 1)
          If (VBA.Left(LCase(marrAlle(lngZeile, 1)), VBA.Len(sDG)) = sDG Or sDG = "") _
              And (VBA.Left(LCase(marrAlle(lngZeile, 2)), VBA.Len(sName)) = sName Or sName = "") _
 _
              And (VBA.Left(LCase(marrAlle(lngZeile, 3)), VBA.Len(sVorname)) = sVorname Or  _
sVorname = "") Then
            AnzTreffer = AnzTreffer + 1
            For Spalte = 1 To UBound(marrAlle, 2)
              marrFilter(AnzTreffer, Spalte) = marrAlle(lngZeile, Spalte)
            Next
          End If
        Next
        Me.ListBox1.List = marrFilter
        
        Me.Label_gefunden.Visible = False

        If AnzTreffer = 1 And CheckBox_1_Treffer = True Then
          'Zeilennumer des gefundenen Eintrags in Tabellenblatt eintragen
          wksSuche.Range(mcZelle).Value = VBA.Val(marrFilter(1, UBound(marrFilter, 2)))
          Me.Hide
        End If
      Else
          Me.Label_gefunden.Visible = True
      End If
  End If
  mbolListboxExit = False

End Sub


Betrifft: AW: Suchmaschine über VBA
von: Janine Demski
Geschrieben am: 28.11.2020 14:58:25

In meinem VBA Editor waren 2 Häkchen mehr als bei dir. Hab diese entfernt und jetzt funktioniert es!
Wahnsinn!! Ich danke dir 1000 Mal!