Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
VBA: Suchergebnis in Listbox
11.01.2023 16:38:47
Max
Hallo zusammen
Ich habe bisher dank Dr. Google immer irgendwie eine Antwort auf meine Fragen gefunden, komme mit meinem jetzigen Problem aber nicht mehr weiter und eröffne hiermit meinen ersten Beitrag. Ich hoffe, ihr könnt mir helfen.
Zu meinem Problem. Ich habe eine Arbeitsmappe mit mehreren Tabellenblättern. In der Tabelle werden Vorgänge zu verschiedenen Personen geführt. Ein Tabellenblatt dient dazu die neuen Fälle einzutragen. In zwei Spalten werden die Namen der verantwortlichen Personen erfasst. Eine Routine überwacht die Änderung der Spalten, in denen die Personennamen eingetragen werden. Wird dort eine Zelle verändert, startet eine Suche auf einem anderen Tabellenblatt und überprüft, ob der Name dort schon ein Mal vorkommt. Dies funktioniert soweit.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
If Not Application.Intersect(Target, Range("C:D")) Is Nothing Then
SearchStr = Cells(Target.Row, Target.Column)
a = 0
With Worksheets("Aktive Fälle").Range("C:D")
Set Found = .Find(SearchStr, Lookat:=xlWhole)
If Not Found Is Nothing Then
firstAddress = Found.Address
Do
a = a + 1
Set Found = .FindNext(Found)
Loop While Not Found Is Nothing And Found.Address  firstAddress
End If
End With
If Found Is Nothing Then
MsgBox ("Leider nichts gefunden")
UF_SuchErgebnis.Show
Else
MsgBox (a & "* gefunden")
End If
End If
ErrorHandler:
Application.EnableEvents = True
On Error GoTo 0
End Sub
Die Messagebox dient aktuell dazu, die Tätigkeit des Codes zu überprüfen, wird später dann aber nicht mehr benötigt.
Das Ziel wäre nun, dass das/die Suchergebniss/e (ganze Zeile in denen der Name vorkommt) in einer Listbox ausgegeben wird. Schön wäre zudem, wenn die Zeilenüberschriften, welche in der Zeile 2 stehen (deshalb funktioniert ColumnHeads = True nicht), ebenfalls mit in der Listbox ausgegeben werden würden.
Ich danke euch jetzt bereits für eure Unterstützung.
Gruss
Max

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Suchergebnis in Listbox
11.01.2023 17:39:11
Yal
Hallo Max,
Wenn die C:D-Spalten, in der Du suchst, auch die C:D-Spalten sind, worauf den Ereignis reagieren soll, dann findest Du immer mindestens eine Treffer: die Zelle, die gerade geändert wurde.
Versuche so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim SearchStr As String
Dim Erg As String
Dim Found As Range
'bei nicht relevante Change, sofort aussteigen
If Intersect(Target, Range("C:D")) Is Nothing Then Exit Sub
'suchen und sammeln
SearchStr = CStr(Target.Value)
With Worksheets("Aktive Fälle").Range("C:D")
Set Found = .Find(SearchStr, Lookat:=xlWhole)
If Not Found Is Nothing Then
firstAddress = Found.Address
Do
Erg = Erg & ";" & Found.Value & "(" & Found.Address(0, 0) & ")"
Set Found = .FindNext(Found)
Loop While Not Found Is Nothing And Found.Address  firstAddress
End If
End With
'Ergebnis anzeigen
If Found Is Nothing Then
MsgBox ("Leider nichts gefunden")
UF_SuchErgebnis.Show
Else
MsgBox UBound(Split(Erg, ";")) & " * gefunden: " & Mid(Erg, 2) 'ohne führende Semikolon
End If
End Sub
Mache die Variabledeklaration erforderlich (in "Extras", "Optionen).
Die Fehlerbehandlung "On Error.." scheint hier ein bischen over-engineered.
Der Rest war einwandfrei.
VG
Yal
Anzeige
AW: VBA: Suchergebnis in Listbox
11.01.2023 18:07:31
Max
Hallo Yal
Danke für die rasche Antwort. Ich werde dies morgen im Büro gerne ausprobieren.
Die Eingabe findet auf einem anderen Tabellenblatt statt wie die Suche, d.h. die Zelle in der die Eingabe erfolgt wird nicht durchsucht. Die Fehlerbehandlung habe ich eingebaut, da ich festgestellt habe, wenn ich eine Spalte auffülle, kommt es zu einer ungewollten Fehlermeldung, die ich so umgehen kann.
Einen schönen Abend.
Gruss
Max
AW: VBA: Suchergebnis in Listbox
12.01.2023 07:41:04
Yal
Hallo Max,
"d.h. die Zelle in der die Eingabe erfolgt wird nicht durchsucht." das würde mich überraschen...
Aber die Zelleadresse wird ja auch gesammelt, kann man schnell sehen, was kommt.
VG
Yal
Anzeige
AW: VBA: Suchergebnis in Listbox
11.01.2023 18:01:49
snb

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C:D")) Is Nothing Then
MsgBox Evaluate("countif(c:d,""" & Target.Value & """)")
MsgBox Application.CountIf(Range("C:D"), Target)
For j = 3 To 4
On Error Resume Next
With Sheet1.UsedRange.Columns(j)
.AutoFilter 1, Target.Value
c00 = c00 & vbLf & .Offset(1).SpecialCells(2).SpecialCells(12).Address
.AutoFilter
End With
Next
If c00  "" Then LIstbox.list=split(c00,vblf)
End If
End Sub

153 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige