Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Excel VBA -- Tabellenblätter auswählen und drucken





Frage

Hallo zusammen, ich habe eine Excel-Datei mit mehreren Tabellenblättern. Über ein Formular (das bereits funktioniert und die 3 Werte AuswahlTabelle1 bis 3 zurückgibt) soll ausgewählt werden, welche der 3 Tabellenblätter ausgedruckt werden sollen. Um herauszufinden, wie man die Tabellenblätter markiert und anschließend den Druckauftrag startet, habe ich ein Makro aufgezeichnet und dann versucht, den Code entsprechend anzupassen, indem ich den Inhalt der inneren Klammer versucht habe durch Verketten zu einem String "zusammenzubaseln", was aber leider nicht funktioniert hat.. Der Originalcode für das Markieren war: [code] sheets(Array("Tabelle1", "Tabelle2").Select [/code] ...und das war mein Versuch, wäre nett, wenn mir jemand weiterhelfen könnte, die denn die Zeile, in der die Tabellenblätter ausgewählt werden, auszusehen hat.. Im voraus schonmal vielen Dank! Nun aber der Code [code] Option Explicit Private Sub Button_Drucken Click() Dim owB As workbook Set owBDatei = Thisworkbook Dim Auswahl As string Formular_Druckauswahl.Hide ' Mappen abhängig von Auswahl markieren If Auswahl_Tabelle1= True Then Auswahl = Auswahl & """Tabelle1""" End If If AuswahlTabelle2 = True Then if Auswahl<>"" then Auswahl = Auswahl & ", ""Tabelle1""" Else Auswahl = Auswahl & """Tabelle1""" End If End If If AuswahlTabelle3 = True Then If Auswahl <> "" Then Auswahl = Auswahl & ", ""Tabelle2""" Else Auswahl = Auswahl & """Tabelle2""" End If End If MsgBox Auswahl If Auswahl <> "" Then owBDatei.sheets(Array(Auswahl)).select owBDatei.sheets("Tabelle1").ACtivate ACtivewindow.selectedsheets.Printout else msgbox "Auswahl erforderlich!" end if End Sub [/code]

Antwort 1 von nighty

hi snailhouse :-)

vielleicht hilfreich :-)

gruss nighty

Option Explicit
Sub MehrereSheets()
Dim SammelSheets As String, Tab1 As String, Tab2 As String
Dim ShIndex As Integer
Do
Tab1 = InputBox("Wie heißt das erste zu bearbeitende Tabellenblatt?", "Tabellenblattauswahl")
Loop While SheetExists(Tab1) = False
Do
Tab2 = InputBox("Wie heißt das letzte zu bearbeitende Tabellenblatt?", "Tabellenblattauswahl")
Loop While SheetExists(Tab2) = False
For ShIndex = Sheets(Tab1).Index To Sheets(Tab2).Index
SammelSheets = SammelSheets & Worksheets(ShIndex).Name & ","
Next
SammelSheets = Mid(SammelSheets, 1, Len(SammelSheets) - 1)
Worksheets(Split(SammelSheets, ",")).Select
End Sub


Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Sheets(strName) Is Nothing
End Function


Antwort 2 von snailhouse

Hallo nighty,

vielen Dank für die Antwort, so ging's auch.

Ich bin heute durch eine Hilfestellung eines Kollegen auf folgende Lösung gekommen:

Auch das funktioniert.

Gruß
Jürgen


Option Explicit

Private Sub Button_Drucken_Click()

Dim oWB As Workbook
Set oWB = ThisWorkbook
Dim oWsListe As Worksheet
Set oWsListe = oWB.Worksheets("Tabelle1")
Dim MappenArray() As String
Dim I As Integer

ReDim MappenArray(2)

Formular_Druckauswahl.Hide

' Schritt 1: ermitteln der Anzahl der ausgewählten Tabellenblätter

I = -1

If Auswahltabelle1 = True Then
  I = I + 1
End If

If Auswahltabelle2 = True Then
  I = I + 1
End If

If Auswahltabelle3 = True Then
  I = I + 1
End If

ReDim MappenArray(I)   ' Ende Ermittlung Anzahl der ausgewählten Tabellenblätter

' Schritt 2: Füllen des Arrays für Tabellenblattmarkierung

I = 0
If Auswahltabelle1 = True Then
  MappenArray(I) = "Tabelle1"
  I = I + 1
End If

If Auswahltabelle2 = True Then
  MappenArray(I) = "Tabelle2"
  I = I + 1
End If

If Auswahltabelle3 = True Then
  MappenArray(I) = "Tabelle3"
End If

    Sheets(MappenArray).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    oWsListe.Cells(3, 1).Select
End Sub


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: