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

Suchmaschine über VBA

Suchmaschine über VBA
27.11.2020 21:13:43
Janine
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)

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchmaschine über VBA
28.11.2020 09:13:13
fcs
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
Anzeige
AW: Suchmaschine über VBA
28.11.2020 11:24:47
Janine
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 :(
Anzeige
AW: Suchmaschine über VBA
28.11.2020 13:18:35
fcs
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 --&gt Verweise die Verweise.
Das sollte mindestens so aussehen, dass die markierten Verweise auch bei dir als aktiv markiert sind.
Userbild
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

Anzeige
AW: Suchmaschine über VBA
28.11.2020 14:58:25
Janine
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!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige