#1 23. März 2012 erneute Abfrage Hallo liebe RRler, Ich habe ein kleines Problem und zwar habe ich in Excel zwei Arbeitsblätte auf dem ersten sind Artikelnummer, Bezeichnung und Preise ausgelistet. Auf dem zweiten möchte ich durch ein Sub eine Rechnung erstellen. das habe ich soweit auch schon hinbekommen nur jetzt bin ich faul und möchte nicht jedes mal das Sub neu starten und wollte eine Schleife einbauen die mich nach der ersten Artikelnummer fragt ob ich noch weitere Artikel hinzufügen möchte. ich habe mich auch mal dran versucht wäre nett wenn ich mir meinen Fehler aufzeigen könnten. Danke schon mal im vorraus Code: Option Explicit Sub ErstelleRechnung_2() Dim Artikelnummer As Double Dim i As Integer Dim Löschen As String Dim e As Integer Dim Summe As Double Dim neuerArtikel As String i = 4 e = 4 Löschen = "n" Löschen = MsgBox("Wollen Sie die Dateinsätze löschen?", vbYesNo, "Löschen") If Löschen = vbYes Then Range(Worksheets("Rechnung").Cells(4, 1), Worksheets("Rechnung").Cells(36, 6)).Select Selection.ClearContents End If Artikelnummer = InputBox("Geben Sie die gewünschte Artikelnummer ein: ", "Artikelnummer") While Artikelnummer <> "" While Worksheets("Artikel").Cells(i, 2) <> Artikelnummer i = i + 1 Wend While Worksheets("Rechnung").Cells(e, 3) <> "" e = e + 1 Wend If Worksheets("Rechnung").Cells(e, 4) = "" Then Summe = Worksheets("Artikel").Cells(i, 4) Else Summe = Sheets("Artikel").Cells(i, 4) + Worksheets("Rechnung").Cells(e + 1, 4) End If If Worksheets("Rechnung").Cells(e - 1, 3) <> "Artikel" Then Range(Worksheets("Rechnung").Cells(e - 1, 3), Worksheets("Rechnung").Cells(e - 1, 4)).Select Selection.ClearContents Worksheets("Rechnung").Cells(e - 1, 3) = Worksheets("Artikel").Cells(i, 3) Worksheets("Rechnung").Cells(e - 1, 4) = Worksheets("Artikel").Cells(i, 4) Worksheets("Rechnung").Cells(e, 3) = "Summe" Worksheets("Rechnung").Cells(e, 4) = Summe Else Worksheets("Rechnung").Cells(e, 3) = Worksheets("Artikel").Cells(i, 3) Worksheets("Rechnung").Cells(e, 4) = Worksheets("Artikel").Cells(i, 4) Worksheets("Rechnung").Cells(e + 1, 3) = "Summe" Worksheets("Rechnung").Cells(e + 1, 4) = Summe End If neuerArtikel = MsgBox("Wollen Sie noch einen Artikel eingeben?", vbYesNo, "Neuer Artikel") If neuerArtikel = vbYes Then Artikelnummer = InputBox("Geben Sie die gewünschte Artikelnummer ein: ", "Artikelnummer") Else Artikelnummer = "" End If Wend End Sub MFG DeSmAn + Multi-Zitat Zitieren
#2 26. März 2012 AW: erneute Abfrage Was genau bezweckst Du damit? Steig da grad nich so ganz durch. Vielleicht wärs besser, Du erklärst Deinen Code mal und stellst Biespielbilder von Deiner Excel mit rein. Greetz + Multi-Zitat Zitieren
#3 26. März 2012 AW: erneute Abfrage Was ist denn das Problem mit dem Code? Die Schleife sieht für mich ziemlich korrekt aus und sollte auf den ersten Blick das tun, was du möchtest. Hmm, ich sehe grade, dass du Artikelnummer als Double deklariert hast. Bei der Schleife checkst du ob das == "" ist (was ein String ist), genauso, wie du der Variable bei einem "Weitere Artikel Nein" auch "" zuweist. Gibt es also einen Typfehler? Wenn ja: Nimm z.b. -1 als Artikelnummer zum Abbrechen und keine leeren Strings Wenn nicht: Sag doch bitte genauer, wo das Problem liegt^^ + Multi-Zitat Zitieren