Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
520to524
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
520to524
520to524
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anzahl der Ausdrucke einzelner Tabellen

Anzahl der Ausdrucke einzelner Tabellen
22.11.2004 11:12:37
Stefano
Wie Ihr schon wisst, NOCH keine Ahnung von VBA ;)
Hoffe Ihr könnt mir nochmal helfen.
Ich möchte ein Druckfenster geöffnet haben, wo alle vorhandenen
Tabellen aufgeführt werden und man die Anzahl der Ausdrucke angeben kann.
Am besten mit Tab die einzelnen Positionen abgehen und immer die Anzahl eingeben, drucken button und alles wird ausgeworfen. Habe schon so was ähnliches gefunden, aber da musste man aus einem Auswahlmenu die Tabellen auswählen, jedes mal neu.
Vielen Dank für Eure Hilfe
greetz
Stefano
AW: Anzahl der Ausdrucke einzelner Tabellen
Boris
Hi Stefano,
so wie du es möchtest, musst du ein kleines Userform programmieren. Allerdings ist das gar nicht ganz so einfach, wenn denn z.B. die Anzahl der Tabellenblätter variieren kann.
Daher gibt es eine Möglichkeit, das auch außerhalb von VBA zu gestalten.
Dazu ist notwendig:
1) Ein Blatt mit dem Namen "Drucken"
2) Einfügen - Name - Definieren, Name: Blätter
Bezieht sich auf: =ARBEITSMAPPE.ZUORDNEN(1+0*JETZT())
3) In A1 des Blattes "Drucken":
=WENN(ZEILE(A1)>ANZAHL2(Blätter);"";TEIL(INDEX(Blätter;ZEILE(A1));FINDEN("]";INDEX(Blätter;ZEILE(A1)))+1;31))
und weit genug runterkopieren.
So listest du alle in der Mappe vorhandenen Blätter auf - ab A1 bis A...
In B1 bis B... kannst du jetzt die gewünschte Anzahl der Ausddrucke pro Blatt eingeben.
Dann VBA-Editor öffnen - Einfügen - Modul, dort folgender Code:
Option Explicit

Sub drucken()
Const Ws_Druck As String = "Drucken"
Dim C As Range
Dim intRow As Integer
Dim strCheck As String
With Worksheets(Ws_Druck)
strCheck = MsgBox("Es werden insgesamt " & Application.Sum(.Columns(2)) & " Ausdrucke erstellt. Jetzt drucken?", vbYesNo, "Gebe bekannt...")
If strCheck = vbNo Then Exit Sub
On Error Resume Next 'quick and dirty
For intRow = 1 To ThisWorkbook.Sheets.Count
If .Cells(intRow, 2) <> "" Then
Worksheets(CStr(.Cells(intRow, 1))).PrintOut copies:=.Cells(intRow, 2)
End If
Next intRow
On Error GoTo 0
End With
End Sub

Diesen Code jetzt einem Button zuweisen - fertig.
Grüße Boris
Anzeige
AW: Anzahl der Ausdrucke einzelner Tabellen
Stefano
Danke Boris,
werds ausprobieren und posten obs geklappt hat!
Stefano
AW: Anzahl der Ausdrucke einzelner Tabellen
Achim
Poste mal, ob es geklappt hat, interessiert mich auch.
Achim
Etwas schlanker ohne Namensvergabe...
Boris
Hi Stefano,
...geht es so:
1) Ein Blatt mit dem Namen "Drucken" erstellen.
2) Im VBA-Editor in das Klassenmodul der Tabelle "Drucken" diesen Code:
Option Explicit

Private Sub Worksheet_Activate()
Dim i As Integer
Columns(1).Clear
For i = 1 To ThisWorkbook.Sheets.Count
Cells(i, 1) = Sheets(i).Name
Next i
End Sub

3) Der Rest bleibt unverändert.
Grüße Boris
AW: Etwas schlanker ohne Namensvergabe...
Stefano
Danke Boris, klappt wunderbar! Wäre natürlich ein Traum, wenn das nicht in Zelle A1
losgehen würde, sondern z.b. in B7. Schade auch, dass man die Auflistung der Tabellen nicht formatieren kann. Noch irgendwelche Ideen hierzu? Hast mir aber schon sehr weitergeholfen, danke!
Anzeige
Mit veränderten Bereichen
Boris
Hi Stefano,
dann formatie manuell die Spalte B aus dem Blatt "Drucken" so, wie du es haben möchtest. Dazu diese beiden Codes:
Einfügen in das Klassenmodul "Drucken":
Option Explicit
Private Sub Worksheet_Activate()
Dim i As Integer
Range("B7:B60000").ClearContents
For i = 1 To ThisWorkbook.Sheets.Count
Cells(i + 6, 2) = Sheets(i).Name
Next i
End Sub

In ein allgemeines Modul:
Option Explicit
Sub drucken()
Const Ws_Druck As String = "Drucken"
Dim C As Range
Dim intRow As Integer
Dim strCheck As String
With Worksheets(Ws_Druck)
strCheck = MsgBox("Es werden insgesamt " & Application.Sum(.[c7:c30000]) & " Ausdrucke erstellt. Jetzt drucken?", vbYesNo, "Gebe bekannt...")
If strCheck = vbNo Then Exit Sub
On Error Resume Next 'quick and dirty
For intRow = 1 To ThisWorkbook.Sheets.Count
If .Cells(intRow + 6, 3) <> "" Then
Worksheets(CStr(.Cells(intRow + 6, 2))).PrintOut copies:=.Cells(intRow + 6, 3)
End If
Next intRow
On Error GoTo 0
End With
End Sub

Die Druckanzahl wird demnach in Spalte C eingegeben.
Grüße Boris
Anzeige
Bestimmte Tabellen weglassen
Stefano
Boris, Du bist der Größte!
Wenn Du mir jetzt noch sagst, wie ich es anstelle, dass zwei bestimme Tabellen (immer die Gleichen, wie z.b. die Tabelle "Drucken") nicht mit in der Liste aufgeführt werden, dann bist Du echt der Allergrößte!!!
Viele Grüße
Stefano
AW: Bestimmte Tabellen weglassen
Boris
Hi Stefano,
dann änder den Code im Klassenmodul "Drucken" wie folgt:
Option Explicit

Private Sub Worksheet_Activate()
Dim i As Integer
Dim Ws As Worksheet
Range("B7:B60000").ClearContents
i = 7
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Drucken" And Ws.Name <> "Internes" Then
Cells(i, 2) = Ws.Name
i = i + 1
End If
Next Ws
End Sub

Hier werden die Blätter mit den Namen "Drucken" und "Internes" nicht aufgelistet - das musst du entsprechend anpassen. Achte auf die genaue Schreibweise - es wird auch zwischen Groß-und Kleinschreibung unterschieden.
Grüße Boris
Anzeige
AW: Bestimmte Tabellen weglassen
stefano
Hat super geklappt! Wirklich ein super Forum hier und
sehr hilfsbereite User! Thanks!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige