VBA per Schleife wiederholen bis leere Zelle

Bild

Betrifft: VBA per Schleife wiederholen bis leere Zelle
von: Björn
Geschrieben am: 09.06.2015 07:32:25

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.

Bild

Betrifft: Bahnhof???
von: UweD
Geschrieben am: 09.06.2015 09:04:33
Hallo
ich verstehe den Zusammenhang nicht?
Was hat das Eine mit dem Anderen zu tun?
Hast du mal eine Musterdatei?
LG UweD

Bild

Betrifft: AW: Bahnhof???
von: Björn
Geschrieben am: 09.06.2015 10:07:44
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

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: Kenny
Geschrieben am: 09.06.2015 09:07:09
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

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: Björn
Geschrieben am: 09.06.2015 10:02:44
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?

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: UweD
Geschrieben am: 09.06.2015 10:12:12
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"
...


Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: Björn
Geschrieben am: 09.06.2015 10:30:08
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 :-)

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: UweD
Geschrieben am: 09.06.2015 11:06:46
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

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: Björn
Geschrieben am: 09.06.2015 11:31:02
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

Bild

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

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: Björn
Geschrieben am: 09.06.2015 15:26:41
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

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: UweD
Geschrieben am: 09.06.2015 16:05:49
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

Bild

Betrifft: AW: VBA per Schleife wiederholen bis leere Zelle
von: Björn
Geschrieben am: 10.06.2015 07:10:27
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA per Schleife wiederholen bis leere Zelle"