VBA - Listbox, Abfrage über Schleife möglich?

Hallo zusammen,

nachdem ein Problem gelöst ist, möchte ich das nächste angehen, auch wenn ich dafür erst mal eine (wenn auch unschöne und langwierige) Lösung habe.

Und zwar habe ich eine Tabelle, in der ich mittels einer Listbox die Zu- und Abgänge der Menge abfrage. Man klickt also in der Listbox das entsprechende Packmittel mit dazugehöriger Artikel-Nr an und es kommt eine Abfrage nach der entnommenen Menge. Das funktioniert soweit auch.

Mein Problem ist nur, dass ich für jede neu dazukommende Artikelnummer den Code mit der entsprechenden Zeilennr erweitern muss, was ziemlich mühselig ist. Möchte das also in soweit automatisieren, dass nur in der Listbox der ListFillRange entsprechend angepasst werden muss.

Habe es schon mit einer For-Schleife probiert, doch wenn ich da die zweite Zeile in der Listbox anklicke, zieht er die Menge bei der ersten Zeile ab.

Hier mal mein Code für Zeile 5:

Private Sub ListBox1_Click ()

If ListBox1.ListIndex = 0 Then

Range(„AA5“).Value = Range(„F5“).Value

Menge = InputBox("Bitte geben Sie die verbrauchte Menge ein: ")

If Menge > Range(„F5“) Then

MsgBox („VERBRAUCHTE Menge ist GRÖßER als noch VORHANDENE Menge!!!“)

Else: Range(„F5“) = Range(„F5“) - Menge

End If

Select Case Range(„F5“)

Case Is >= (4 * Range(„H5“))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(60, 230, 30)

Case Is = (3 * Range(„H5“)))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(250, 245, 10)

Case Is = (2 * Range(„H5“)))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(240, 100, 10)

Case Is = (Range(„H5“)))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(255, 10, 10)

Case Else
Worksheets(„Antirutschpapier“).Range(„F5“).Font.Color = RGB(255, 255, 255)
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(175, 0, 0) _
: MsgBox („Mindestbestandsmenge unterschritten“)

End Select

End Sub

Hoffe, mir kann jemand helfen, dass das ganze ‚automatisch‘ so nach dem Motto bis zur letzten beschriebenen Zeile in Spalte D funktioniert.

Danke schon mal im Voraus.

PS: Arbeite mit Windows XP, Excel 2002

Mein Problem ist nur, dass ich für jede neu dazukommende
Artikelnummer den Code mit der entsprechenden Zeilennr
erweitern muss, was ziemlich mühselig ist. Möchte das also in
soweit automatisieren, dass nur in der Listbox der
ListFillRange entsprechend angepasst werden muss.

Hallo Victoria,

was hat dein Code mit ListFillRange zu tun?

Du hast im Code zweimal IF, aber nur ein End If, irgednwas stimmt da nicht, kann auch durch das zeilenumbrechen hier kommen.

Die ANDs in der Select-Schleife brauchst du nicht.

Und ich persönlich halte nix von zwei durch Doppelpunkt getrennte Befehlen in einer Zeile.

Gruß
Reinhard

Morgen Reinhard,

danke für Deine Antwort.

Mit dem If hast Du Recht. Habe vergessen, dass End If mit in meine Anfrage zu kopieren. In meinem Code steht es weiter unten, da noch weitere Anweisungen folgen.

Das mit den ANDs in der Select-Anweisung sehe ich anders. Für das, was ich machen will. benötige ich sie m.E.

Wo habe ich denn 2 durch einen Doppelpunkt getrennte Befehle? Meinst Du am Ende von Select-Case, wo das mit der MsgBox steht??

Nun aber zu dem ListFillRange.
Direkt mit dem Code hat es natürlich nichts zu tun. Ich möchte mein Programm halt in so weit ‚automatisieren‘, dass ich, wenn ich eine neue Artikelnummer hinzufüge, im Code nix mehr machen muss, sondern nur in der ListBox beim ListFillRange den Bereich von z.B. C5:smiley:5 auf C5:smiley:6 ändern brauche.
Das heißt also, wenn ich in der Listbox die zweite Artikel-Nr. anklicke, die Abfrage nach der Menge kommt und diese auch in der richtigen Zeile meiner Tabelle abgezogen/ dazuaddiert wird.

Bis jetzt habe ich ja folgenden Code für jede Zeile einzeln mit den entsprechenden Anpassungen des ListIndex und der Zeilennummer:

If ListBox1.ListIndex = 0 Then

Range(„AA5“).Value = Range(„F5“).Value

Menge = InputBox("Bitte geben Sie die verbrauchte Menge ein: ")

If Menge > Range(„F5“) Then

MsgBox („VERBRAUCHTE Menge ist GRÖßER als noch VORHANDENE Menge!!!“)

Else: Range(„F5“) = Range(„F5“) - Menge

End If

Select Case Range(„F5“)

Case Is >= (4 * Range(„H5“))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(60, 230, 30)

Case Is = (3 * Range(„H5“)))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(250, 245, 10)

Case Is = (2 * Range(„H5“)))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(240, 100, 10)

Case Is = (Range(„H5“)))
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(255, 10, 10)

Case Else
Worksheets(„Antirutschpapier“).Range(„F5“).Font.Color = RGB(255, 255, 255)
Worksheets(„Antirutschpapier“).Range(„F5“).Interior.Color = RGB(175, 0, 0) _
: MsgBox („Mindestbestandsmenge unterschritten“)

End Select

If (Range(„M5“) > Range(„F5“)) Then
MsgBox („Meldebestand ist UNTERSCHRITTEN !!! Bitte lösen Sie eine Bestellung aus !!!“)
End If

End If

End Sub

Möchte aber nun, dass das ganze evtl in einer Schleife funktioniert, wo man, wenn möglich, die letzte beschriebene Zeile in Spalte D mit einfügt.

Hoffe, mich diesmal besser ausgedrückt zu haben.

Vielen Dank schon mal im Voraus.

Gruß
Victoria

Hallo Victoria,

was hat dein Code mit ListFillRange zu tun?

Du hast im Code zweimal IF, aber nur ein End If, irgednwas
stimmt da nicht, kann auch durch das zeilenumbrechen hier
kommen.

Die ANDs in der Select-Schleife brauchst du nicht.

Und ich persönlich halte nix von zwei durch Doppelpunkt
getrennte Befehlen in einer Zeile.

Gruß
Reinhard

Hallo Victoria,

Mit dem If hast Du Recht. Habe vergessen, dass End If mit in
meine Anfrage zu kopieren. In meinem Code steht es weiter
unten, da noch weitere Anweisungen folgen.

Okay.
Jetzt sieht dein Code aber anders aus als der Erste (ich meine nicht End If)
Bastle mal eine aussagekräftige Mappe und lade sie hoch mit FAQ:2606
Gut wäre es du benutzt die gleichen Zellbereiche, Blattnamen usw.

Das mit den ANDs in der Select-Anweisung sehe ich anders. Für
das, was ich machen will. benötige ich sie m.E.

Ich sehe das anders aber bitteschön.

Wo habe ich denn 2 durch einen Doppelpunkt getrennte Befehle?
Meinst Du am Ende von Select-Case, wo das mit der MsgBox
steht??

Ja.

Gruß
Reinhard

Hallo Reinhard,

auf die aussagekräftige Mappe musst Du leider noch warten, da das mit dem hochladen bei mir auf Arbeit nicht geht, da irgendwas zu alt ist.
Kann es deswegen erst heut Abend machen, wenn ich mit meinem eigenen PC ins Netz kann.

Hoffe, dass Du mir dann, wenn Du meine Mappe selbst siehst, helfen kannst únd auch verstehst, was ich gemeint habe.

Trotzdem danke derweile.

Gruß,
Victoria

Morgen Reinhard,

unter diesem Link findest Du mal eine Beispielmappe.

http://rapidshare.com/files/242130109/Variante1.xls…

Hoffe, dass Du mir anhand dieser helfen kannst.

Unter Inventurliste findest Du auch das mit der Spalte, wo Du mir schon helfen konntest.

Danke schon mal.

Gruß,
Victoria