PDA

Vollständige Version anzeigen : in VBA suchen und die 4 Zellen rechts davon in einer Listbox ausgeben


KlaBert
04.04.2012, 15:19
Guten Tag :-),
ich bin zum ersten Mal hier, habe aber schon oft Beiträge gelesen. Nun benötige ich Hilfe, da ich trotz vielen Lesens nicht zum Ziel gekommen bin.

Ich habe eine Tabelle mit Ersatzteilen, in der 8 Spalten und ca. 20 bis 200 Zeilen gefüllt sind. Für jeden Hersteller habe ich ein eigenes Tabellenblatt.

Nun soll ein "Formular" mit mehreren Listboxen meinen Kollegen die Auswahl der benötigten Ersatzteilliste erleichtern. Ich habe also bereits Code geschrieben um die Hersteller zu listen, die ersten Untergruppen abzubilden und möchte nun folgendes machen:
- in einer Spalte "D" ab der 2. Zelle nach unten einen bestimmten Begriff suchen, der mehrfach vorkommen kann. Jedesmal, wenn dieser Begriff gefunden wird, sollen die 4 Zellen rechts von diesem Wert in einer bestimmten Listbox ausgegeben werden.
Leider schaffe ich es nicht, den Bereich mit den 4 Zellen zu definieren, auszugeben und weiter zu suchen ...
:entsetzt:

Ich hoffe, mir ist noch zu helfen :-)!

Danke im Voraus für jedes Bemühen ... (mir raucht schon die Rübe).

;-)

pefeu
04.04.2012, 16:08
Hallo KlaBert,

schön wäre es, wenn wir Deine Mappe sehen könnten.
Nun muss sich jemand ein Tabellenblatt ausdenken, das sicherlich anders als deins aussehen wird, sonst kann man nicht testen.
Zudem schreibst Du nicht, wo Deine ListBox, die die Daten aufnehmen soll ist.
Auf einem Tabellenblatt, auf einem UserForm(ular)?

Suchen und weitersuchen kannst Du mit der Find-Methode.
Die kannst Du Dir über die Excel Hilfe Funktion ansehen.

Gruß Peter
<Font Face="Courier New,FixedSys"Size=2><Blockquote><FONT COLOR=#0000FF>Option</FONT>&nbsp;<FONT COLOR=#0000FF>Explicit</FONT>

<FONT COLOR=#0000FF>Public</FONT>&nbsp;<FONT COLOR=#0000FF>Sub</FONT>&nbsp;Find_Methode()

<FONT COLOR=#0000FF>Dim</FONT>&nbsp;rZelle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;Range
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;sFundst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;<FONT COLOR=#0000FF>String</FONT>
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;sSuchbegriff&nbsp;&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;<FONT COLOR=#0000FF>String</FONT>

&nbsp;&nbsp;&nbsp;sSuchbegriff&nbsp;=&nbsp;"dein&nbsp;Begriff"

&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>With</FONT>&nbsp;ThisWorkbook.Worksheets("Tabelle1").Columns(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Set</FONT>&nbsp;rZelle&nbsp;=&nbsp;.Find(What:=sSuchbegriff,&nbsp;LookAt:=xlPart,&nbsp;LookIn:=xlValues,&nbsp;After:=.Ce lls(.Cells.Count))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>If</FONT>&nbsp;<FONT COLOR=#0000FF>Not</FONT>&nbsp;rZelle&nbsp;<FONT COLOR=#0000FF>Is</FONT>&nbsp;<FONT COLOR=#0000FF>Nothing</FONT>&nbsp;<FONT COLOR=#0000FF>Then</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sFundst&nbsp;=&nbsp;rZelle.Address
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Do</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#008000>' Hier werden die gefundenen Werte verarbeitet, d. h. die ListBox gefüllt</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Set</FONT>&nbsp;rZelle&nbsp;=&nbsp;.FindNext(rZelle)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Loop</FONT>&nbsp;<FONT COLOR=#0000FF>While</FONT>&nbsp;<FONT COLOR=#0000FF>Not</FONT>&nbsp;rZelle&nbsp;<FONT COLOR=#0000FF>Is</FONT>&nbsp;<FONT COLOR=#0000FF>Nothing</FONT>&nbsp;<FONT COLOR=#0000FF>And</FONT>&nbsp;rZelle.Address&nbsp;&lt;&gt;&nbsp;sFundst
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Else</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox&nbsp;"Der&nbsp;Begriff&nbsp;&nbsp;"""&nbsp;&amp;&nbsp;sSuchbegriff&nbsp;&amp;&nbsp;"""&nbsp;&nbsp;wurde&nbsp;nicht&nbsp;gefunden.",&nbsp;_
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;48,&nbsp;"&nbsp;&nbsp;&nbsp;Hinweis&nbsp;f&uuml;r&nbsp;"&nbsp;&amp;&nbsp;Application.UserName
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>End</FONT>&nbsp;<FONT COLOR=#0000FF>If</FONT>
&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>End</FONT>&nbsp;<FONT COLOR=#0000FF>With</FONT>
&nbsp;&nbsp;&nbsp;
<FONT COLOR=#0000FF>End</FONT>&nbsp;<FONT COLOR=#0000FF>Sub</FONT>
</Blockquote><Font Face="Courier New,FixedSys"Size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code eingefügt mit <b><a href="http://rtsoftwaredevelopment.de/SyntaxHi.zip">Syntaxhighlighter 1.14</a></b></Font><Font Size=2></p>

KlaBert
05.04.2012, 07:15
Guten Morgen Peter,
zunächst einmal vielen Dank für die Hilfe !! ;-) und zwar sowohl in Richtung "was ich schreiben soll" - als auch "Codetechnisch".

Wenn es recht ist, würde ich meine Datei hochladen ... aber, ich wüsste jetzt auf Anhieb nicht genau - wie und wo ..

Ich habe eine UserForm angelegt und starte die Listboxen durch einen Button im ersten Tabellenblatt.

So .. und jetzt probiere ich erst einmal deinen Code aus ;-).....
Bis später.

Vielen Dank :-) !

Klaus

KlaBert
05.04.2012, 11:06
Hallo Peter,

also .. ich habe nun deinen Code getested und habe noch immer das Problem, dass ich die 4 Zellen neben dem gefundenen Wert nicht selektieren kann. Aus diesem Grund bekomme ich sie auch nicht in die Listbox ...
Do
' Hier werden die gefundenen Werte verarbeitet, d. h. die ListBox gefüllt
Set rZelle = .FindNext(rZelle)
Loop While Not rZelle Is Nothing And rZelle.Address <> sFundst

Ohhhh - ich habe noch einen Fehler gemacht.
Das Bild ist noch um eine Spalte komplizierter :-(.

Also in Spalte 3 gibt es Geräte ... a, b, c, d, a, a, b, b, c, ....
in Spalte 4 gibt es Gerätezusatz .. Benzin, Elektro ...
Es gibt also die gleiche Maschine (z. B. Rasenmäher) mit Benzin aber auch als Elektro

Wenn ich also einen Rasenmäher oder Balkenmäher ... in der Listbox auswähle (ListBox2), dann muss ich als nächstes definieren (ListBox4) ob Benzin oder Elektro. Diese Auswahl reduziert die Gesamtmenge der Rasenmäher Modelle. Diese Modelle, die beide Eigenschaften haben, sollen mit den 3 Spalten daneben (Zusatzinfos) in der Listbox5 gezeigt werden ;-) und dann noch am besten mit einer pdf verlinkt - anklickbar;-) ..

Entschuldigung, wenn das alles etwas viel auf einmal ist !!! :-)

Wow .. ist doch viel komplizierter als ich dachte.

Falls jemand eine Idee hat, bin ich wirklich sehr dankbar für die Hilfe!

Gruß,
Klaus