Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
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
Suchen und Ausgeben
SvenE
Hallo zusammen,
ich habe vor langer Zeit schon sehr erfolgreich eure Hilfe angenommen.
Anscheinend wenn man etwas nicht jeden Tag macht ... ich vergesse alles.
Ich hoffe Ihr könnt mir wieder helfen, habe schon die SuFu benutzt komme aber auf kein Ergebnis.
Ich habe eine Userform erstellt, in dieser Userform soll nach einem Begriff (ArtikelNr.) gesucht werden.
Also ich habe eine Textbox in der ein Suchbegriff eingegeben werden soll. Per Click auf CommandButton1 soll dieser Begriff in verschiedenen (benannten) Tabellenblättern gesucht werden.
Der Suchbegriff wird in mehreren Tabellenblättern gefunden - definitiv
Aus dem Tabellenblatt in dem der Begriff gefunden wird soll ein weiterer Wert in eine Textbox übergeben werden. (Excel sverweis Funktion - so würde ich das in Excel machen)
Da es sich um maximal 6 Werte handelt die ausgegeben werden müssen ist die Frage, wenn ich auf den CommandButton1 klicke - soll dann gleich die ganze Suche starten oder wäre es einfacher durch den Klick 6 verschiedene Suchen zu starten die einem textfeld zugeordnet sind.
Ich versuche es mal zu verdeutlichen
TextBox1 - eingabe des Suchbegriffs (ArtikelNr.)
CommandButton1 - startet die Suche
Textbox2 - Ausgabe des Preises, gesucht nach der Artikelnummer - sverweis um den Preis zu bestimmen - auf einem bestimmten Tabellenblatt
und dies für 5 weitere TextBoxen mit 5 weiteren Tabellenblättern
Ich hätte gerne mit einem klick alle 6 Ergebnisse (die werte müssen dann noch weiterverarbeitet werden!)
Ich finde gerade nicht mal einen Anfang :(
Vielleicht kann mir jemand ein paar Denkansätze liefern - danke!

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Suchen und Ausgeben
11.11.2011 13:24:19
JOWE
Hallo
ein Ansatz wäre vielleicht dies:
Private Sub CommandButton1_Click()
Dim ze, sp As Long
ze = Sheets(1).Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False).Row
sp = Sheets(1).Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False).Column
Me.TextBox2.Value = Sheets(1).Cells(ze, sp + 1)
End Sub
Gruß
Das Makro sucht den Wert (Textbox1.Text) im Sheet 1.
Der Treffer identifiziert Zeile (ze) und Spalte (sp) der Trefferzelle im Sheet 1.
In die Textbox2 wird der Wert der Nachbarzelle rechts (ze, sp+1) eingetragen.
Gruß
Jochen
Anzeige
AW: Suchen und Ausgeben
11.11.2011 15:05:33
SvenE
Hallo Jochen,
vielen Dank für den Einstieg.
Habe es jetzt soweit umgesetzt
Private Sub CommandButton1_Click()
Dim NLA, NLP As Long
Dim USA, USP As Long
Dim StNL, StNLStk As Long
Dim StUS, StUSStk As Long
NLA = Sheets("Preisliste NL").Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False).Row
NLP = Sheets("Preisliste NL").Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False). _
Column
Me.TextBox2.Value = Sheets("Preisliste NL").Cells(NLA, NLP + 2)
Me.TextBox16.Value = Sheets("Preisliste NL").Cells(NLA, NLP)
USA = Sheets("Preisliste USA").Cells.Find(What:=Me.TextBox16.Text, SearchFormat:=False).Row
USP = Sheets("Preisliste USA").Cells.Find(What:=Me.TextBox16.Text, SearchFormat:=False). _
Column
Me.TextBox5.Value = Sheets("Preisliste USA").Cells(USA, USP + 2)
StNL = Sheets("NORMAL STOCK").Cells.Find(What:=Me.TextBox16.Text, SearchFormat:=False).Row
StNLStk = Sheets("NORMAL STOCK").Cells.Find(What:=Me.TextBox16.Text, SearchFormat:=False). _
Column
Me.TextBox3.Value = Sheets("NORMAL STOCK").Cells(StNL, StNLStk + 3)
StUS = Sheets("DAILY").Cells.Find(What:=Me.TextBox2.Text, SearchFormat:=False).Row
StUSStk = Sheets("DAILY").Cells.Find(What:=Me.TextBox2.Text, SearchFormat:=False).Column
Me.TextBox4.Value = Sheets("DAILY").Cells(StUS, StUSStk + 4)
Me.TextBox7.Value = Sheets("DAILY").Cells(StUS, StUSStk)
End Sub

Nur leider ist bei der letzten Abfrage StUS ein Fehler.
Anscheinend ist die Liste "DAILY" anders aufgebaut.
Hier müsste ich in einem bestimmten Bereich suchen - nämlich nur in B (bzw. B+C da diese Verknüpft sind und eine Zelle ergeben)
Wie kann ich sagen das nur ein bestimmter bereich durchsucht werden soll?
Vielen Dank vorab! :)
Anzeige
AW: Suchen und Ausgeben
11.11.2011 15:35:11
SvenE
Sorry Jochen - hab den Fehler gefunden.
Melde mich wieder :)
AW: Suchen und Ausgeben
11.11.2011 18:38:54
JoWe
Du kannst die Suche auch auf Bereiche einschränken:
StUS = Sheets("DAILY").Range("B:B").Find(What:=Me.TextBox2.Text, SearchFormat:=False).Row
AW: Suchen und Ausgeben
11.11.2011 20:41:15
SvenE
Vielen Dank! Funktioniert!
Ich hatte bis vor ein paar Tagen officexp und jetzt zum ersten mal office 2010.
Einige VBA begriffe habe ich noch nie gehört was aber auch an mir liegen kann ;)
Jetzt brauche ich ja eine Art von Schleife.
Da ja meist nur Teile einer Artikelnummer als Sucheingabe verwendet wird und es somit mehrere Ergebnisse auf jeden Tabellenblatt gibt, leider auch noch in Unterschiedlicher Anzahl.
Ich habe mehrere Sachen aus dem Netz zusammen kopiert und versucht diese anzupassen .... ohne jeglichen Erfolg.
Ich verstehe auch nicht ganz wo ich das in meiner SUB Commandbutton1_click einbauen soll.
Nach jeder einzelnen Abfrage oder für das Gesamte!?
Ich versuche mich auch selber daran - ein Lösungsansatz wäre sehr nett.
Vielen Dank
Anzeige
AW: Suchen und Ausgeben
12.11.2011 13:33:06
JoWe
Ich würde in der Userform je Textbox zunächst mal das Exit_Ereignis nutzen. Wenn die Prozedur dann das flüssige Arbeiten behindert aber umschwenken auf einen CommandButton für alle Textboxen.
Jochen
AW: Suchen und Ausgeben
13.11.2011 16:58:55
SvenE
Hallo Jochen,
irgendwie komme ich nicht weiter. Ich habe jetzt versucht per Spinbutton das nächste Ergebnis anzeigen zu lassen (so wie bei STRG+F weitersuchen)
Er springt auch zu einem nächsten Ergebnis aber danach wieder zum ersten zurück obwohl es 4 Möglichkeiten geben müsste. Zudem zeigt meine textbox nun WAHR an und nicht mehr die Nummer.
Private Sub SpinButton1_Change()
Dim nla, nlp As Long
nla = Sheets("Preisliste NL").Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False).Row
nlp = Sheets("Preisliste NL").Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False). _
Column
Me.TextBox2.Value = Sheets("Preisliste NL").Cells(nla, nlp + 2)
Me.TextBox16.Value = Sheets("Preisliste NL").Cells(nla, nlp)
TextBox2.Text = Sheets("Preisliste NL").Cells.Find(What:=TextBox1.Text, After:=ActiveCell,  _
LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Sheets("Preisliste NL").Cells.FindNext(After:=ActiveCell).Activate
End Sub
Es ist bestimmt umständlich was ich mache ... würde mich freuen wenn du nochmal helfen könntest.
Danke!
Anzeige
AW: Suchen und Ausgeben
13.11.2011 18:38:49
SvenE
Also jetzt bekomme ich das richtige Ergebnis ... jedoch nur 2 von 4 insgesamt !?
Private Sub SpinButton1_Change()
Dim nla, nlp, acc As Long
nla = Sheets("Preisliste NL").Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False).Row
nlp = Sheets("Preisliste NL").Cells.Find(What:=Me.TextBox1.Text, SearchFormat:=False). _
Column
Me.TextBox2.Value = Sheets("Preisliste NL").Cells(nla, nlp + 2)
Me.TextBox16.Value = Sheets("Preisliste NL").Cells(nla, nlp)
Me.TextBox2.Value = Sheets("Preisliste NL").Cells.Find(What:=TextBox1.Text, After:= _
ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Sheets("Preisliste NL").Cells.FindNext(After:=ActiveCell).Activate
Me.TextBox16.Text = ActiveCell.Text
Me.TextBox2.Value = ActiveCell.Offset(0, 2)
End Sub
Nach dem ersten Ergebnis springt er zum nächsten (überspringt aber auch eins!) und danach wieder zurück. Mit dem text in textbox1 müsste er aber 4 ergebnisse bringen (strg-f macht das mit weitersuchen)
Kann jemand meinen Fehler sehen !?
Danke vorab
Anzeige
AW: Suchen und Ausgeben
13.11.2011 19:10:27
SvenE

Private Sub SpinButton1_change()
Dim varwert As Variant
varwert = Me.TextBox1.Text
Sheets("Preisliste NL").Cells.Find(What:=varwert, After:=ActiveCell, LookIn:=xlValues,  _
LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Sheets("Preisliste NL").Cells.FindNext(After:=ActiveCell).Activate
Me.TextBox16.Text = ActiveCell.Text
Me.TextBox2.Value = ActiveCell.Offset(0, 2)
End Sub
Macht das selbe - bekomme nicht die richtigen werte ausgegeben bzw. gar nicht errst angegeben ...
Schonmal Vielen Dank vorab und noch einen schönen Sonntag
Anzeige
AW: Suchen und Ausgeben
14.11.2011 08:21:58
SvenE
Morgen zusammen,
hab nur die Frage wieder auf offen gestellt :) Grüße
AW: Suchen und Ausgeben
14.11.2011 09:09:58
SvenE
Morgen :)
Nicht schlagen - aber hier habe ich die Lösung gefunden:
Private Sub SpinButton1_change()
Sheets("Preisliste NL").Select
Sheets("Preisliste NL").Cells.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:= _
xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Me.TextBox16.Text = ActiveCell
Me.TextBox2.Value = ActiveCell.Offset(0, 2)
End Sub
Manchmal ist es gut ne Nacht zu schlafen und dann nochmal zu schauen!
Aber keine Sorge - ich komme wieder.
Grüße
Anzeige

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige