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

Makro, Suchfunktion, Zelle nach oben bis Wert

Makro, Suchfunktion, Zelle nach oben bis Wert
Markus
Hallo Leute!
Ich bin absoluter Excel und VBA Neuling, aber bring mir das ganz gerade ein bisschen bei, indem ich Suchmaschinen um Rat frage. Diese geniale Seite hat mir auch schon oft weiter geholfen, nur bei meinem folgenden Problem komm ich nicht weiter:
Ich habe ein Excel-Sheet in folgender Form:
In A4 steht "Haus 1", in B5 bis B10 stehen in jeder Zelle etwas (z.B. B5=TV, B6=Radio, B7=Bett,...).
In A 14 steht "Haus 2", in B15 bis B17 stehen wieder in jeder Zelle etwas (z.B. B15=Tisch, B16=TV,..).
Jetzt möchte ich ein Suchfeld (eine Zelle), in das ich z.b. TV eingebe, dann soll eine MessageBox kommen, die mir bei der Eingabe von "TV" nach obigem Beispiel die Werte "Haus 1" und "Haus 2" ausgibt (=Haus 1 und Haus 2 haben ein TV). Wenn kein Haus ein TV hat, soll in der MessageBox ein Satz stehen wie: "Nichts gefunden!" .
Ich habe schon ein Makro gebastelt, das dem ganzen sehr nahe kommt, nur gibt es noch 2 Probleme:
1. Als Ergebnis der Suche (z.B. nach "TV") gibt mir das Makro den Wert der Zelle links neben der Zelle, in der "TV" steht. Das Makro soll aber ab der Zelle mit dem gefundenen Wert eine Zelle nach links gehen und dann so lang nach oben, bis eine Zelle mit einem Wert kommt und diesen Wert ausgeben. (So dachte ich mir könnte man das lösen...)
2. Wenn die Suche den eingegebenen Wert nicht findet, gibt mir die MessageBox nicht meinen gewollten Satz aus, sondern einfach nichts ("Leerzeichen").
[Noch schöner wäre es natürlich wenn er mir, wenn er nichts findet, eine eigene MessageBox ausgibt, mit einem eigenen Text und Error-Symbol. (Sowas: MsgBox "Es wurde kein Haus gefunden! Bitte beachten Sie die genaue Schreibweise der Einrichtung. " & Chr(13) & Chr(13), vbOKOnly + vbCritical, "Ergebnisse der Suche nach " & myB).]
Hier also mein derzeitiges Makro: (In AG1 wird der zu suchende Wert eingegeben)
Sub finde()
Dim myB As String
Dim myA As String
Dim Counter As Integer
Counter = 1
myB = Range("AG1")
For Counter = 1 To ActiveSheet.UsedRange.Rows.Count
If ActiveSheet.Range("B" & Counter) = myB Then
myA = myA & Chr(10) & ActiveSheet.Range("A" & Counter)
If ActiveSheet.Range("B" & Counter)  myB Then
myA = "Nichts gefunden!"
End If
End If
Next
MsgBox "Folgende Häuser haben die Einrichtung " & myB & ":" & Chr(13) & Chr(13) & myA,  _
vbOKOnly + vbInformation, "Ergebnisse der Suche nach " & myB
End Sub

Vielen Dank schonmal für eure Hilfe!
PS: Falls es Verständnisprobleme geben sollte, dann kann ich die Datei auch noch hochladen.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro, Suchfunktion, Zelle nach oben bis Wert
15.10.2009 00:57:03
Daniel
HI
probiers mal so:
Sub finde()
Dim myB As String
Dim myA As String
Dim myC As String
Dim Counter As Integer
Counter = 1
myB = Range("AG1")
For Counter = 1 To ActiveSheet.UsedRange.Rows.Count
If ActiveSheet.Range("B" & Counter) = myB Then
If Range("A" & Counter - 1) = "" Then
myC = Range("A" & Counter).End(xlUp)
Else
myC = Range("A" & Counter - 1)
End If
myA = myA & Chr(10) & myC
End If
Next
If myA = "" Then
MsgBox "Es wurde kein Haus gefunden! Bitte beachten Sie die genaue Schreibweise der  _
Einrichtung." _
& Chr(13) & Chr(13), vbOKOnly + vbCritical, "Ergebnisse der Suche nach " & myB
Else
MsgBox "Folgende Häuser haben die Einrichtung " & myB & ":" & Chr(13) & Chr(13) & myA, _
vbOKOnly + vbInformation, "Ergebnisse der Suche nach " & myB
End If
End Sub
Gruß, Daniel
Anzeige
AW: Makro, Suchfunktion, Zelle nach oben bis Wert
15.10.2009 11:20:16
Markus
Jaaa! Super! Herzlichsten Dank!! Es funktioniert einwandfrei! :)
Hättest du noch eine Idee, wie ich die Suche nach dem Wert, den ich in AG1 eingetragen habe, einfach durch bestätigen dieser Zelle (durch Enter/Return drücken oder Zelle deselektieren), starten kann? Im Moment habe ich dem Makro eine Tastenkombination zugewiesen, was allerdings umständlicher ist als einfach nur Enter drücken zu müssen.
Schönen Gruß,
Markus
AW: Makro, Suchfunktion, Zelle nach oben bis Wert
15.10.2009 12:37:33
Markus
Das zweite Problem mit der Enter-Taste habe ich jetzt auch hinbekommen. Hat sich also erledigt. Trotzdem danke an alle, die schon am grübeln waren! :)
Und nochmals vielen Dank an dich, Daniel, du hast einen weiteren Menschen glücklich gemacht! :)
Für alle, die das gleiche Problem haben, ist hier die Lösung:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub 'wenn mehr als eine Zelle geändert wurde
If Target.Address  "$AG$1" Then Exit Sub 'Die Zelle G13 wurde nicht geändert
'hier der Code, der ausgeführt werden soll
End Sub

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige