Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Per VBA suchen, Ergebniszeile ausgeben | Herbers Excel-Forum


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 sub
Gruß
Björn B.


  

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 Sub
Für deine weitere Unterstützung wäre ich sehr dankbar.

VG und einen guten Wochenstart wünscht
Tanja


  

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.

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.


  

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 Sub
Danke auch für den Hinweis mit den Namen. Werde ich sofort umsetzen!

Ganz liebe Grüße
Tanja


Beiträge aus den Excel-Beispielen zum Thema "Per VBA suchen, Ergebniszeile ausgeben"