Anzeige
Archiv - Navigation
1428to1432
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
Inhaltsverzeichnis

VBA per Schleife wiederholen bis leere Zelle

VBA per Schleife wiederholen bis leere Zelle
09.06.2015 07:32:25
Björn
Guten Morgen, ich habe folgende Frage:
in einer Tabelle mit mehreren Tabellenseiten, möchte ich auf einer Seite, etwas ausdrucken, und nach dem Druck eine bestimmte Zelle um einen Zähler erhöhen.
Das klappt auch schon prima, mit folgendem Code:
Sub Drucken_fortlaufend()
' Drucken_fortlaufend Makro
' Ein Makro, welches bei jedem starten, eine Rechnung druckt und die lfd Nummer um 1 erhöht
' Tastenkombination: Strg+y
Application.Goto Reference:="Drucken_fortlaufend"
Dim wert As String
ActiveWindow.SelectedSheets.PrintOut 'Druckt den angegebenen Druckbereich
wert = Range("H18").Value ' Bereich, wo Wert ist: H18 abändern
Range("H18").Value = wert + 1 ' H18 abändern
ActiveWorkbook.Save
End Sub
meine Frage ist nun, wie kann ich dieses Makro so oft durchlaufen lassen, bis in einer Zelle, einer definierten Spalte, auf einem anderem Tabellenblatt, eine leere Zelle und somit das Ende der Tabelle erreicht ist?
Über Infos wäre ich sehr dankbar.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bahnhof?
09.06.2015 09:04:33
UweD
Hallo
ich verstehe den Zusammenhang nicht?
Was hat das Eine mit dem Anderen zu tun?
Hast du mal eine Musterdatei?
LG UweD

AW: Bahnhof?
09.06.2015 10:07:44
Björn
Auf dem Einen Blatt, ist eine Rechnung hinterlegt, hier gibt es ein Feld (H18) welches im nicht Druckbaren Bereich ist und durch das Makro immer nach dem Drucken um eins erhöht wird.
Mit dieser Zelle wird bewirkt, dass das Rechnungsblatt sich alle Daten aus dem anderen Tabellenblatt zieht.
(Also Verkaufsdatum, Artikel usw.)
Jetzt würde ich halte gern, diesen Druck soweit laufen lassen, bis in Spalten eins, des TAbellenblatts mit allen Daten die erste Leerzeile erreicht ist.
Vielleicht ist weißt Du jetzt was ich meine?
LG
Björn

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 09:07:09
Kenny
Weiß jetzt nicht genau wie dein Workbook aussieht, aber prinzipiell kannst du es folgendermaßen umsetzen:

Sub Drucken_fortlaufend()
' Drucken_fortlaufend Makro
' Ein Makro, welches bei jedem starten, eine Rechnung druckt und die lfd Nummer um 1 erhöht
' Tastenkombination: Strg+y
do while worksheets("tabelle2").cells(zeile,5)  "" 'solange in der Zelle was steht ausführen
Application.Goto Reference:="Drucken_fortlaufend"
Dim wert As String
ActiveWindow.SelectedSheets.PrintOut 'Druckt den angegebenen Druckbereich
wert = Range("H18").Value ' Bereich, wo Wert ist: H18 abändern
Range("H18").Value = wert + 1 ' H18 abändern
ActiveWorkbook.Save
zeile = zeile + 1
loop
End Sub
Jetzt würde das Programm sooft drucken bis in der Spalte 5 von Tabelle 2 eine leere Zelle erreicht ist.
Liebe Grüße

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 10:02:44
Björn
Vielen Dank für Deine schnelle Antwort.
Ich habe ("tabelle2"). gegen ("Gesamt Einnahmen2015"). getauscht, und (zeile,5) gegen (zeile,1)
Hier wirft er mir aber einen Fehler aus.
Laufzeitfehler `1004`
wenn ich auf Debuggen gehe, wird folgende Zeile im Makro markiert:
Do While Worksheets("Gesamt Einnahmen2015").Cells(zeile, 1) "" 'solange in der Zelle was steht ausführen
mir ist gerade aufgefallen, dass in diesem Bereich (zeile, 1) immer ein Leerzeichen vor die 1 rutscht. Ist das richtig so?
Eigentlich müsste doch auch eine Spalte, statt einer Zeile gemeint sein, ist das egal?

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 10:12:12
UweD
Hallo
Zeile= 1
vor die Do While Schleife setzen
Es gibt keine Zeile 0 in Excel
Zeile=1
do while worksheets("tabelle2").cells(zeile,5)  "" 'solange in der Zelle was steht ausführen
Application.Goto Reference:="Drucken_fortlaufend"

AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 10:30:08
Björn
Ok, hab ich versucht, das klappt auch, allerdings nur 2 Ausdrucke, dann hört das auf.
Zeile 0 ? Keine Ahnung, in dem Code kann ich Zeile 0 nicht finden.
Ich habe zusätzlich versucht:
Zeile = Zeile + 1
an die stelle zu setzten, die Du empfohlen hast. Dabei hört er aber gar nicht mehr auf zu drucken, was echt eine Herausforderung war, dass Programm zum Abbruch zu bewegen :-)

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 11:06:46
UweD
Hallo
So?
Ich denke, es wurde das falsche Blatt verwendet
Speichern reicht 1x am Schluss
Sub Drucken_fortlaufend()
' Drucken_fortlaufend Makro
' Ein Makro, welches bei jedem starten, eine Rechnung druckt und die lfd Nummer um 1 erhöht
' Tastenkombination: Strg+y
Dim Zeile As Double
Const Spalte As Integer = 1 'Soll in Spalte A nachsehen
Zeile = 1 'Startwert
With Worksheets("Gesamt Einnahmen2015")
Do While .Cells(Zeile, Spalte)  "" 'solange in der Zelle was steht ausführen
Application.Goto Reference:="Drucken_fortlaufend"
ActiveWindow.SelectedSheets.PrintOut 'Druckt den angegebenen Druckbereich
.Range("H18") = .Range("H18") + 1 ' H18 abändern
Zeile = Zeile + 1
Loop
End With
ActiveWorkbook.Save
End Sub
Gruß UweD

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 11:31:02
Björn
Es wird mir langsam unangenehm, ständig weiter zu fragen. :-(
Das Blatt hatte ich vorher auch geändert.
Der jetzige Versuch sieht druckt ebenfalls nur 2 Ausdrucke. Ohne Fehlermeldung, hört er auf.
Vielen Dank für Deine/Eure Geduld, mit so einem wie mich.
Gruß Björn

AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 14:48:38
UweD
Hallo
Dann wirst du wohl mal eine (anonymisierte) Musterdatei hochladen müssen.
Gruß UweD

AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 15:26:41
Björn
Das mache ich doch glatt.
Ich habe einfach mal ein paar nichtssagende Daten drin, aber ich denke, dass es hier ersichtlich wird, wonach ich suche.
Tolles Forum hier!!!
Vielen Dank
Hier der Link
https://www.herber.de/bbs/user/98106.xls

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
09.06.2015 16:05:49
UweD
Hallo
Du arbeitest mit 2 unterschiedlichen TabellenBlättern.
Die müssen einzeln angesprochen werden.
Warum nur 2x gedruckt wurde, liegt an den Überschriften, bzw. den Leerzellen darunter.
Deine "Daten" fangen erst ab Zeile 5 an.

Gesamt Einnahmen2015
 ABC
1123
2lfd Nr.DatumArtikel
3   
4   
5102.01.2015Test Artikel 1
6205.01.2015Test Artikel 2
7301.02.2015Test Artikel 3
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.03 einschl. 64 Bit


Ich hab das Makro so abgeändert.
Sub Drucken_fortlaufend()
' Drucken_fortlaufend Makro
' Ein Makro, welches bei jedem starten, eine Rechnung druckt und die lfd Nummer um 1 erhöht
' Tastenkombination: Strg+y
Dim TB1, TB2
Dim Zeile As Double
Const StartZeile As Single = 5 'Startwert, Wegen der Überschriften
Const Spalte As Integer = 1 'Soll in Spalte A nachsehen
Set TB1 = Sheets("Gesamt Einnahmen2015")
Set TB2 = Sheets("Rechnung 2015")
Zeile = TB2.Range("J7") + StartZeile - 1
Do While TB1.Cells(Zeile, Spalte)  "" 'solange in der Zelle was steht ausführen
'Application.Goto Reference:="Drucken_fortlaufend"
TB2.PrintOut 'Druckt den angegebenen Druckbereich
TB2.Range("J7") = TB2.Range("J7") + 1 ' J7 abändern
Zeile = Zeile + 1
Loop
ActiveWorkbook.Save
End Sub

Meiner Meinung nach brauchst du die Zeile "Application.Goto Reference:="Drucken_fortlaufend"" nicht
Gruß UweD

Anzeige
AW: VBA per Schleife wiederholen bis leere Zelle
10.06.2015 07:10:27
Björn
Wahnsinn!!!
Vielen Lieben Dank. Du hast mir sehr geholfen!!!
Das würde ich auch gern mal verstehen und umsetzen können!
Danke schön Gruß Björn

41 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige