Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema CommandButton | |
---|---|
![]() |
CommandButton-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema TextBox | |
---|---|
![]() |
TextBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 12.02.2010 12:28:41
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
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Björn B.
Geschrieben am: 12.02.2010 12:37:26
Hallo,
den Cells.Find(......) Befehl hinten einfach mit .Row. Dann hast du die Zeile.
Gruß
Björn B.
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 12.02.2010 12:57:24
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
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Björn B.
Geschrieben am: 12.02.2010 13:07:48
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 subGruß
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 12.02.2010 13:22:28
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
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Björn B.
Geschrieben am: 12.02.2010 13:27:25
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.
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 12.02.2010 13:52:20
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
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Björn B.
Geschrieben am: 12.02.2010 14:02:35
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.
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 12.02.2010 14:08:04
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
Betrifft: Nachtrag: Debug markiert immer ".Formula =" owt
von: Tanja
Geschrieben am: 12.02.2010 14:14:56
Nachtrag: Der Debugger markiert immer ".Formula ="
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Björn B.
Geschrieben am: 12.02.2010 14:17:38
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.
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 12.02.2010 14:19:47
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
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 15.02.2010 09:54:29
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 SubFür deine weitere Unterstützung wäre ich sehr dankbar.
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Björn B.
Geschrieben am: 15.02.2010 11:48:22
Hallo Tanja,
die Erklärung habe ich Dir schon geschrieben:
Da alles in Anführungszeichen als Text interpretiert wird.
Betrifft: AW: Per VBA suchen, Ergebniszeile ausgeben
von: Tanja
Geschrieben am: 15.02.2010 12:17:26
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 SubDanke auch für den Hinweis mit den Namen. Werde ich sofort umsetzen!