Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Per VBA suchen, Ergebniszeile ausgeben
Tanja
Hallo zusammen,
habe eine (hoffentlich) kurze Frage.
Ich suche per Makro (Makrorecorder lässt grüßen) nach einem Wert. Da ich die Zeile, in der der Wert gefunden wurde, noch für einen SVERWEIS brauche, müsste ich die Zeile quasi "ausgegeben" kriegen.
Weiß jemand, wie ich das machen kann?
VG und schonmal ein schönes Wochenende ;)
Tanja
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 12:37:26
Björn
Hallo,
den Cells.Find(......) Befehl hinten einfach mit .Row. Dann hast du die Zeile.
Gruß
Björn B.
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 12:57:24
Tanja
Hi Björn,
danke für die Antwort.
Leider weiß ich nicht, wie ich das im folgendem Code (wie gesagt, makrorecorder) unterbringen soll. Könntest du mir da nochmal auf die Sprünge helfen?
Columns("A:A").Select
Selection.Find(What:=eingabe, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
VG
Tanja
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 13:07:48
Björn
Hallo,
also was meinst Du mit "ausgeben" für Deinen SVERWEIS?
Willst Du die Zeile nachher in einer Zelle stehen haben? oder eine MSGBox oder oder oder.
Ich mach mal ein Bsp mit der Ausgabe in eine Zelle, z.B. B1.
Deine "eingabe" also nach was gesucht werden soll, musst du noch dazu machen.

sub test
Dim Zeile as long
Zeile = Columns("A:A").Find(What:=eingabe, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).row
Range("B1").Value = Zeile
end sub
Gruß
Björn B.
Anzeige
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 13:22:28
Tanja
Hallo Björn,
ich danke dir erneut. :)
Mit "ausgeben" meinte ich, dass das Makro vielleicht "im Hinterkopf" hat, wo er das Ergebnis gefunden hat, dass ich im selben Sub halt den SVERWEIS mit einbauen kann.
Wenn die Zeile in eine Zelle geschrieben wird, ist es zwar nciht sooo elegant, hilft mir aber weiter.
Danke! :)
LG
Tanja
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 13:27:25
Björn
Deswegen habe ich ja gefragt.... weiß ja nicht, was du willst.
Also, wenn es das Makro im "Hinterkopf" behalten soll, dann kannst du den Code von mir auch nutzen. Lass einfach das "Range("B1").Value = Zeile" weg.
Im Hinterkopf bedeutet so viel wie zwischenspeichern und Werte speichert man in Variablen. Das habe ich da ja schon gemacht... die Variable "Zeile" ist genau das, was du brauchst.
Du kannst diese dann in den Sverweis einbauen...
Gruß
Björn B.
Anzeige
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 13:52:20
Tanja
AH! Danke für den Hinweis. So geht das natürlich! :)
Kurze Frage noch: Kann man auch das Ergebnis von Formeln in einer TextBox einer UserForm ausgeben?
Vielen Dank nochmal!
Tanja
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 14:02:35
Björn
Hallo,
das kann man so ganz pauschal mit Ja beantworten.
Aber bevor ich da jetzt wieder 3 Bsp. mach, die nachher erst nicht passen...
Wo hast du die Formel? In Einer Zelle? In Makro?
Einfach etwas beschreiben.
Der Code sieht dann in etwa so aus:
in A1 habe ich hier eine Zahl stehen, die in Prozent formatiert ist (Zahlenformat der Zelle), deshalb das mal 100.
Me.TextBox2.Value = Format(Range("A1")).Value * 100, "0.00")
Das Umformatieren mit dem Befehl Format kannst du auch weglassen.
Me.TextBox2.Value = Range("A1")).Value
Oder wenn wir das Ergebnis in einer Variablen haben (z.B. die Zeile des Suchergebnisses wie in Deinem Bsp. vorher)
Me.TextBox2.Value = Zeile
Mist, jetzt habe ich doch schon wieder 3 Beispiele gemacht ;-)
gruß´
Björn B.
Anzeige
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 14:08:04
Tanja
Servus Björn,
sorry, das sollte erstmal eine generelle Frage sein ;)
Aber deine Beispiele sind sehr hilfreich.
Die Formel steht im Makro. Habs so versucht:
TextBox2.Formula = "=Formel"
Klappt leider nicht, auch nicht mit "Me." davor. Die Formel ist korrekt. In einer MsgBox konnte ich mir das Ergebnis nämlich ausgeben lassen.
Eine Idee?
LG
Tanja
Nachtrag: Debug markiert immer ".Formula =" owt
12.02.2010 14:14:56
Tanja
Nachtrag: Der Debugger markiert immer ".Formula ="
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 14:17:38
Björn
Hallo Tanja,
schreib doch mal das ganze Makro hier rein, oder zumindest mal die relevanten Teile, sonst muss ich immer raten.
Bin mir nicht sicher, aber Formula ist keine Eigenschaft einer TextBox.
Also ich würde sagen statt TextBox2.Formula nimmst du besser TextBox2.Value (wie in meinem Beispiel auch!!!).
Dann weißt Du der Textbox einen Wert zu nämlcih "=Formel". dann steht in Deiner Textbox =Formel
Da alles in Anführungszeichen als Text interpretiert wird.
Du brauchst eine Variable, in der das Ergbnis der Formel steht.
Also so:
x = 1 + 3
TextBox2.Value = x
Dann steh nachher 4 in der Textbox.
Gruß
Björn B.
Anzeige
AW: Per VBA suchen, Ergebniszeile ausgeben
12.02.2010 14:19:47
Tanja
Hi Björn,
kurz und knapp: Werd's zuhause nochmal probieren und mich bei dir melden ;)
Vielen Dank für die Unterstützung!
LG und ein schönes Wochenende!
Tanja
AW: Per VBA suchen, Ergebniszeile ausgeben
15.02.2010 09:54:29
Tanja
Hallo Björn,
habe soeben mal wieder "rumprobiert" und festgestellt, dass das Makro zwar soweit läuft, aber, dass ich in der Textbox nicht das Ergebnis der Formel ausgegeben kriege, sondern die Formel an sich?
Ich poste mal den Code, vielleicht findest du ja den Grund, wieso es nciht geht?
Private Sub CommandButton2_Click()
Dim eingabe As Double
Dim Zeile As Long
Dim Formel
If TextBox1 = "" Then
MsgBox "Bitte eine Nummer eingeben!"
Else
eingabe = TextBox1.Value
Zeile = Sheets("Verzeichnis").Columns("A:A").Find(What:=eingabe, After:=ActiveCell, LookIn:= _
xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
Formel = "=VLOOKUP(" & Range("A" & Zeile) & ";A:F;4;FALSE)"
TextBox2.Value = Formel
End If
End Sub
Für deine weitere Unterstützung wäre ich sehr dankbar.
VG und einen guten Wochenstart wünscht
Tanja
Anzeige
AW: Per VBA suchen, Ergebniszeile ausgeben
15.02.2010 11:48:22
Björn
Hallo Tanja,
die Erklärung habe ich Dir schon geschrieben:
Da alles in Anführungszeichen als Text interpretiert wird.

Siehe in meinem letzten Beitrag...
Als nächstes bin ich mir nicht ganz sicher, ob du direkt im Code mit dem SVERWEIS rechnen kannst.
ICh glaube, du müsstest entweder:
- die Formel in eine Zelle schreiben und dann das Ergebnis aus der Zelle auslesen
- oder das ganze umständlicher in VBA programmieren. Also mit FIND nach Wert suchen und dann 4 Spalten nach rechts und dort Ergebnis aus der Zelle lesen.
Dieses Ergebnis kannst du dann in die Textbox schreiben.
Noch so ein Tipp am Rande, gib ALLEM in Deinem Code bzw. Projekt aussagekräftige Namen.
Das erleichtert es unheimlich, wenn man größere Projekte hat bzw. mal nach einem Jahr was ändern muss.
Wenn Du z.B. statt TextBox1 das ganze "tbEingabe" benennst, dann weißt Du schon beim Lesen, aha fängt mit tb an, ist ne Textbox, heißt Eingabe, also ist das die...
TextBox2 könnte z.B. tbSverweis oder tbErgebnis oder tbSuche, oder...
Gruß
Björn B.
Anzeige
AW: Per VBA suchen, Ergebniszeile ausgeben
15.02.2010 12:17:26
Tanja
Hallo Björn,
man steh ich auf dem Schlauch. Danke, dass du mir die Augen geöffnet hast. Der text steht ja definitiv irgendwo, also kann ich mir ja auch einfach die Zeile auslesen. Sorry, für die Umstände!
So klappts natürlich:
Private Sub CommandButton2_Click()
Dim eingabe As Double
Dim Zeile As Long
If TextBox1 = "" Then
MsgBox "Bitte eine Nummer eingeben!"
Else
eingabe = TextBox1.Value
Zeile = Sheets("Verzeichnis").Columns("A:A").Find(What:=eingabe, After:=ActiveCell, LookIn:= _
xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
TextBox2.Value = Sheets("Verzeichnis").Range("D" & Zeile)
End If
End Sub
Danke auch für den Hinweis mit den Namen. Werde ich sofort umsetzen!
Ganz liebe Grüße
Tanja
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

Inhaltsverzeichnis

  1. Was ist die Aufgabe?
  2. Einsatzzweck
  3. Lösungsansatz
  4. VBA-Beispiellösung
  5. Tipps
  6. Verwandte Methoden und Eigenschaften
  7. Zusammenfassung

Was ist die Aufgabe?

Du möchtest in einer Excel-Tabelle mittels VBA nach einem bestimmten Wert suchen und die Zelladresse des gefundenen Werts ermitteln.


Einsatzzweck

Das automatisierte Auffinden von Zelladressen auf Basis eines Werts kann in vielen Szenarien nützlich sein, beispielsweise zum Aktualisieren von Daten, zum Verschieben von Zeilen oder Zellen oder zum Setzen von Verknüpfungen.


Lösungsansatz

Verwende die Find-Methode des Range-Objekts in VBA, um den gewünschten Wert zu suchen. Wenn der Wert gefunden wird, kann die Address-Eigenschaft des Range-Objekts verwendet werden, um die Adresse der Zelle zu erhalten.


VBA-Beispiellösung

Sub FindeZelladresse()

    Dim Suchbereich As Range
    Dim GefundeneZelle As Range
    Dim WertZumSuchen As Variant

    'Definieren des Suchbereichs (z.B. Spalte A von Zeile 1 bis 100)
    Set Suchbereich = ThisWorkbook.Worksheets("Tabelle1").Range("A1:A100")

    'Definieren des gesuchten Werts
    WertZumSuchen = "DeinSuchwert" 'Anpassen an deinen gesuchten Wert

    'Suche nach dem Wert
    Set GefundeneZelle = Suchbereich.Find(What:=WertZumSuchen)

    'Wenn Wert gefunden, Zelladresse anzeigen
    If Not GefundeneZelle Is Nothing Then
        MsgBox "Der Wert wurde gefunden in: " & GefundeneZelle.Address
    Else
        MsgBox "Der Wert wurde nicht gefunden."
    End If

End Sub

Tipps

  • Die Find-Methode hat mehrere Parameter, die du anpassen kannst, z. B. um die Suchrichtung zu ändern oder um Groß- und Kleinschreibung zu berücksichtigen.
  • Achte darauf, dass die Find-Methode Nothing zurückgibt, wenn sie den Wert nicht findet. Das sollte in deinem Code berücksichtigt werden.

Verwandte Methoden und Eigenschaften

  • FindNext: Damit kannst du nach weiteren Übereinstimmungen suchen, nachdem die erste Übereinstimmung mit Find gefunden wurde.
  • FindPrevious: Sucht in umgekehrter Reihenfolge nach weiteren Übereinstimmungen.
  • Address: Gibt die Adresse einer Zelle oder eines Zellenbereichs zurück.

Zusammenfassung

Mit der Find-Methode in VBA kannst du effizient nach einem Wert in einem definierten Bereich suchen. Wenn der Wert gefunden wird, ermöglicht dir die Address-Eigenschaft des gefundenen Range-Objekts, die genaue Zelladresse zu ermitteln.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige