Collapse column

Autor Thema: Arbeitsblätter in bestimmter Logik ausdrucken - Makro  (Gelesen 1138 mal)

Offline Barbara123456

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2010
Arbeitsblätter in bestimmter Logik ausdrucken - Makro
« am: Oktober 30, 2014, 11:39:26 Vormittag »
Hallo,

ich versuche mich gerade in meinen ersten Schritten bei Makros.

Hintergrund:
Ich habe eine Datei mit knapp 100 Blättern sowie ein Übersichtsblatt.
Je ca. 10 Blätter haben den gleichen Anfangsbuchstaben...
so habe ich A1, A2, A3 ...... A10, B1, B2, B3........B10 usw.

Nun möchte ich eine Schaltflache erstellen, die den Druck von nur einer Sorte Arbeitsblätter anschmeißt (z.B. nur die A-Blätter)...

Gefunden habe ich dieses Makro:

Sub Makro1()
'
' Makro1 Makro
' druckt alle Blätter Übergreifend
'
' Tastenkombination: Strg+A
'
    Sheets("Übergreifend").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("A1").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("A2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("A3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

und so weiter und so fort

End Sub

ABER - die Anzahl kann sich im Laufe der Zeit ändern durch Löschen / Hinzufügen von Blättern - und dann kommt eine Fehlermeldung -

Meine Frage:
Wie bekomme ich einen Makro hin, dass alle Blätter bspw. A 1-n druckt egal wieviel jetzt n sind?!

Wäre super, wenn mir hier jemand helfen könnte.

Viele Grüße
Barbara  :)

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw: Arbeitsblätter in bestimmter Logik ausdrucken - Makro
« Antwort #1 am: November 02, 2014, 10:11:11 Vormittag »
Hallo Barbara,

hier mal ein Beispiel, wie Du es per Code machen kannst. Der Code geht davon aus, dass eine Tabelle in der Mappe mit
dem Namen "Tabelle1", wo Du in Zelle A1 den Anfangsbuchstaben drin stehen hast, z.B. A.
Das kannst Du entsprechend anpassen, Zeile: strChar = ThisWorkbook.Works....

Code: Visual Basic
  1.   Public Sub PrintAllSheets()
  2.    
  3.     Dim strChar     As String
  4.     Dim lngIndex    As Long
  5.     Dim wksSheet    As Worksheet
  6.     Dim arrPrint()  As String
  7.    
  8. '   Initialisieren...
  9.    
  10.     lngIndex = 0
  11.     strChar = ThisWorkbook.Worksheets("Tabelle1").Cells(1, 1).Value
  12.    
  13. '   Vorhanden und nur ein Buchstabe?
  14.    
  15.     If Not Len(strChar) <> 1 Then
  16.      
  17.       ReDim arrPrint(1 To 1)
  18.      
  19.       For Each wksSheet In ThisWorkbook.Worksheets
  20.        
  21.         If Not Left(wksSheet.Name, 1) <> strChar Then
  22.          
  23. '         Index...
  24.          
  25.           lngIndex = lngIndex + 1
  26.          
  27. '         Neu dimensionieren...
  28.          
  29.           If lngIndex > 1 Then
  30.            
  31.             ReDim Preserve arrPrint(1 To lngIndex)
  32.            
  33.           End If
  34.          
  35. '         Hinzufügen...
  36.          
  37.           arrPrint(lngIndex) = wksSheet.Name
  38.          
  39.         End If
  40.        
  41.       Next
  42.      
  43. '     Drucken...
  44.      
  45.       If lngIndex > 0 Then
  46.      
  47.         ThisWorkbook.Worksheets(arrPrint).PrintPreview
  48. '       ThisWorkbook.Worksheets(arrPrint).PrintOut
  49.        
  50.       End If
  51.      
  52.     End If
  53.    
  54.   End Sub
  55.  

Der Code bildet eine dynamiches Array arrPrint, das die abgefragten Tabellen als Elemente beinhaltet. Dann wird
das Array der Tabellen zum Ausdruck (hier die Druckvorschau) übergeben. Da nicht feststeht (oder es variabel
sein kann), wie viele Tabellen passen, wird das Array im Code immer wieder neu dimensioniert (ReDim Preserve).
Du kannst das Makro z.B. auf eine Schaltfläche legen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.