Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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

Excel, Makro-Schleife mit Zählen

Excel, Makro-Schleife mit Zählen
14.11.2014 14:52:20
winni
Hallo, ich mache einiges mit Tabellen und Makros, dies ist nun ein neues Problem.
Ich habe in einem Tabellenblatt eine Liste von Mitgliedern, die sehr variabel sein kann, da jedes mal hier nur Leute mit bestimmten Voraussetzungen angezeigt werden. Mit den jeweiligen Daten dieser Mitglieder möchte ich nun ein anderes Tabellenblatt ausdrucken, aber eben immer nur so viel Blätter, wie jeweilig Mitglieder angezeigt werden. Habe bisher Makros benutzt, die eine bestimmte Anzahl dieses Vorganges ( kopieren relevanter Daten in einen entsprechenden Bereich, der mit dem Druck-Blatt verknüpft ist; dann Ausdruck ) wiederholt. Nun möchte ich, dass dieser Vorgang genau so oft wiederholt wird, wieviel Mitglieder in der Liste stehen. Wenn die Anzahl erreicht ist, beendet Excel diesen Kopier-Druck-Vorgang. Eigentlich wie ein Serienbrief, aber ich möchte das als Makro so haben, weil ich es auch für andere zukünftige Dinge brauche. Wäre sehr schön, wenn mir jemand helfen könnte. Vielen Dank im Voraus !

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel, Makro-Schleife mit Zählen
14.11.2014 17:05:11
fcs
Hallo Winni,
grundsätzlich kann man es mit Makros der folgenden Struktur lösen.
Hier muss man ggf. im Hauptmakro die Namen der Tabellen und die Startzeile festlegen.
Für Varianten kann man das Hauptmakro kopieren und unterschiedliche Namen für das Blatt mit der Liste vorgeben.
Sieht die Druckausgabe anders aus, dann muss man das Übertragungsmakro anpassen oder eine Kopie des Makros anpassen und den Makronamen im Hauptmakro anpassen.
Gruß
Franz
'Code in einem allgemeinen Modul
Option Explicit
Private wksListe As Worksheet, wksDruck As Worksheet, ZeileL As Long, bolFehler As Boolean
Public Sub DruckenTabelle1()
Set wksListe = ActiveWorkbook.Worksheets("Tabelle1") 'Tabellenblatt mit Liste
Set wksDruck = ActiveWorkbook.Worksheets("Tabelle2") 'Tabellenblatt für Druckausgabe
Call prcDruckenAuswahl(strMakro:="fncDaten_nach_Tab2", Zeile_1:=2, _
bolPreview:=False, ColumnLastRow:=1)
Set wksListe = Nothing
Set wksDruck = Nothing
End Sub
Sub prcDruckenAuswahl(strMakro As String, Optional Zeile_1 As Long = 2, _
Optional bolPreview As Boolean = False, _
Optional ColumnLastRow As Long = 1)
Dim Zeile_Letzte As Long
'strMakro   = Name des Makros, das die Daten aus der Liste in die Drucktabelle überträgt.
'Zeile_1    = 1. Datenzeile der Datenliste
'bolPreview = wenn True dann wird die Druckvorschau angezeigt
'ColumnLastRow = letzte Zeile mit Daten wird in Spalte ermittelt _
wenn 0, dann wird letzte benutzte Zeile aus UsedRange ermittelt
If ColumnLastRow =0 sein!"
Exit Sub
End If
If Zeile_1 =1 sein!"
Exit Sub
End If
If MsgBox("Sichtbare Datenzeilen in Blatt """ & wksListe.Name _
& """ nach Blatt """ & wksDruck.Name _
& """ übertragen und drucken", _
vbOKCancel + vbQuestion, "Seriendruck-Makro: " & strMakro) = vbCancel Then Exit Sub
With wksListe
If ColumnLastRow = 0 Then
Zeile_Letzte = .UsedRange.Row + .UsedRange.Rows.Count - 1
Else
Zeile_Letzte = .Cells(.Rows.Count, ColumnLastRow).End(xlUp).Row
End If
If Zeile_Letzte >= Zeile_1 Then
For ZeileL = Zeile_1 To Zeile_Letzte
If .Rows(ZeileL).Hidden = False Then
Run strMakro
If bolFehler = False Then
If bolPreview = True Then
wksDruck.PrintPreview
Else
wksDruck.PrintOut
End If
End If
End If
Next
Else
MsgBox "Keine Daten in Liste """ & wksListe.Name & """"
End If
End With
End Sub
Private Sub fncDaten_nach_Tab2()
bolFehler = True
On Error GoTo Fehler
'Übertragen der Daten aus der Zeile der Quelletabelle in das Ziel Tabelle1
With wksListe
If .Cells(ZeileL, 1) = "" Then bolFehler = True: Exit Sub
wksDruck.Cells(2, 3).Value = .Cells(ZeileL, 2).Text & " " & .Cells(ZeileL, 1).Text 'Vorname  _
Name
wksDruck.Cells(4, 3).Value = "'" & .Cells(ZeileL, 4).Value  'PLZ
wksDruck.Cells(4, 4).Value = "'" & .Cells(ZeileL, 3).Value  'Ort
wksDruck.Cells(4, 6).Value = .Cells(ZeileL, 5).Value        'Datum
wksDruck.Cells(6, 3).Value = .Cells(ZeileL, 6).Value        'Wert 1
wksDruck.Range("E6").Value = .Cells(ZeileL, 7).Text         'Info
End With
bolFehler = False
Fehler:
With Err
Select Case .Number
Case 0 'alles ist ok
Case Else
MsgBox "Fehler-Nr.: " & .Number & .Description, _
vbInformation + vbOKOnly, "Übertragen der Daten aus Zeile " & ZeileL
End Select
End With
End Sub

Anzeige
AW: Excel, Makro-Schleife mit Zählen
15.11.2014 13:33:54
winni
Pardon erst mal, dass ich erst jetzt antworte, war aber bis eben unterwegs, hatte aber Deine antwort bereits gelesen. Vielen Dank für die Mühe, aber ich habe wohl viel zu viel drumrumgeschrieben, was garnicht durch das Makro, was ich suche, abgedeckt werden soll. Eigentlich brauche ich nur Folgendes : ich habe in Zelle A1 einen Wert (zeigt Anzahl der Mitglieder an), dann habe ich einen Wert in A2 (dort wird die Anzahl der Druckvorgänge angezeigt ( mache ich durch Kennzeichnung der Mitglieder, hier dann die Anzahl der Kennzeichnungen). So, das decke ich durch mein schmales Wissen ab, aber was ich nicht weiss : Das Programm soll nach jedem Vorgang ( Kopieren+Druck) vergleichen : sind die Zahlen in A1 und A2 gleich ?, wenn nein, dann wiederhole mein Makros, wenn die Zahl gleich sind ( also alle Mitglieder durch Ausdrucke erfasst ), dann beende das Makro. Das ist vielleicht das banale Problem bei mir, alles andere glaube ich zu können. Wäre schön, wenn es gehen würde.

Anzeige
AW: Excel, Makro-Schleife mit Zählen
16.11.2014 09:59:56
fcs
Hallo winni,
da hast du dann bei deiner 1. Beschreibung etwas zu weit ausgeholt und das Wesentliche irgendwie nicht beschrieben. Das Zusatzmakro wird dann entsprechend einfach.
Sub Seriendruck()
If MsgBox("Seriendruck jetzt starten?", _
vbQuestion + vbOKCancel, "Seriendruck") = vbCancel Then Exit Sub
With Worksheets("Tabelle1")                 'Blattname ggf. anpassen!
Do Until .Range("A2").Value = .Range("A1").Value
Call CopyDruck_Makro                'Makroname anpassen
.Range("A2").Calculate
Loop
End With
End Sub
Gruß
Franz

Anzeige
AW: Excel, Makro-Schleife mit Zählen
16.11.2014 18:01:24
winni
so, endlich hat mich meine Frau wieder an den PC gelassen, und ich habe es ausprobiert. Hatte noch zum Anfang einen Gedankenfehler beim Kopiervorgang, aber jetzt klappt es WUNDERBAR !!!!!!!!!!!!
Recht recht herzlichen Dank. Das wird mir ab jetzt bei vielen Dingen sehr weiterhelfen !
Gut, dass es Euch, solche hilfsbereiten Menschen wie Du hier im Netz gibt !

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige