1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Druckbutton in Excel nur bestimmte Arbeitsblätter

Discussion in 'Office-Programme' started by Bander007, Apr 30, 2011.

Thread Status:
Not open for further replies.
  1. Bander007

    Bander007 Byte

    Hallo,

    Hab mir die Beispieltabelle aus folgendem Post geladen und eingebaut.

    http://www.pcwelt.de/forum/office-programme-microsoft-office-openoffice-org-staroffice/277699-druckbutton-excel.html

    Es funktioniert auch alles wunderbar.

    Allerdings werden in der Auwahl der zu druckenden Seiten alle Blätter der Arbeitsmappe angezeigt. Einige der Blätter sind aber reine Hilfstabellen die ausgeblendet sind und nicht in der Druckauswahl erscheinen sollen.

    Tabelle1, Tabelle6, Tabelle7 und Tabelle8 sind z.b. die Tabllen die nicht in der Auswahl erscheinen sollen

    Wie kann ich das lösen bzw. wie muss der Code dafür lauten?

    Bin für jede Hilfe dankbar.

    Bis jetzt sieht es bei mir so aus:

    Code:
    Option Explicit
    Dim wsTabelle As Worksheet
    
    Private Sub ComboBox1_Change()
    
    End Sub
    
    Private Sub Drucken_Click()
    
    End Sub
    
    Private Sub UserForm_Activate()
        TextBox1 = 1
        For Each wsTabelle In ThisWorkbook.Worksheets
            If wsTabelle.Name <> "Tabelle1" Then ComboBox1.AddItem wsTabelle.Name
        Next wsTabelle
        ComboBox1.ListIndex = 0
    End Sub
    
    Private Sub CommandButton1_Click()
        If TextBox1 <> "" Or TextBox1 <> 0 And ComboBox1 <> "" Then Worksheets(ComboBox1.Value).PrintOut , copies:=CInt(TextBox1.Value)
    End Sub
    
    Private Sub CommandButton2_Click()
        Unload Me
    End Sub
     
  2. Hascheff

    Hascheff Moderator

    Hallo Bander007,
    schau dir folgende Zeile aus dem Code an:
    Code:
            If wsTabelle.Name <> "Tabelle1" Then ComboBox1.AddItem wsTabelle.Name
    
    Solange die Zahl der auszuschließenden Tabellen begrenzt ist, kannst du sie dazuschreiben.
    Code:
            If wsTabelle.Name <> "Tabelle1" and
               wsTabelle.Name <> "Tabelle6" and
               wsTabelle.Name <> "Tabelle7" and
               wsTabelle.Name <> "Tabelle8"
               Then ComboBox1.AddItem wsTabelle.Name
            end if
    
    Sobald du den Befehl über mehrere Zeilen schreibst, muss "end if" den Befehl abschließen
     
  3. Bander007

    Bander007 Byte

    Hallo Hascheff,

    vielen Dank für Deine Antwort, dein Tip hat mir sehr geholfen. Ich habe es nun so gelöst:

    Code:
    Private Sub UserForm_Activate()
        TextBox1 = 1
        For Each wsTabelle In ThisWorkbook.Worksheets
            If wsTabelle.Name <> "Kundendaten" And wsTabelle.Name <> "Berechnung" And wsTabelle.Name <> "Daten 10er" And wsTabelle.Name <> "Daten 12er" Then ComboBox1.AddItem wsTabelle.Name
        Next wsTabelle
        ComboBox1.ListIndex = 0
    End Sub

    Funktioniert auch spitze allerdings gefällt mir die Variante in der die Befehle untereinander stehen besser. Ist sauberer und übersichtlicher, aber funktioniert leider nicht.

    Ich bekomme die Fehlermeldung: Fehler beim Kompilieren: Erwartet: Ausdruck.

    Gruß Bander
     
  4. Hascheff

    Hascheff Moderator

    Ok, ich habe das in einer anderen VBA-Version (bei Access) so gemacht.

    Wenn es zu unübersichtlich ist oder die Zeile zu kurz, dann lässt sich die Prüfung mit Hilfe einer Variablen zerlegen.

    Code:
    Private Sub UserForm_Activate()
        dim druck as boolean
        TextBox1 = 1
        For Each wsTabelle In ThisWorkbook.Worksheets
            Druck = true
            If wsTabelle.Name <> "Kundendaten" then Druck = false
            If wsTabelle.Name <> "Berechnung"  then Druck = false
            If wsTabelle.Name <> "Daten 10er"  then Druck = false
            If wsTabelle.Name <> "Daten 12er" then Druck = false
            If Druck Then ComboBox1.AddItem wsTabelle.Name
        Next wsTabelle
        ComboBox1.ListIndex = 0
    End Sub
     
  5. Bander007

    Bander007 Byte

    Das Versuch ich gleich mal.

    Vielen Dank
     
  6. bahnrat

    bahnrat Kbyte

    Hallo!

    Ich würde dafür Select Case verwenden.

    Code:
    Private Sub UserForm_Activate()
        TextBox1 = 1
        
    For Each wsTabelle In ThisWorkbook.Worksheets
        Select Case wsTabelle.Name
            
            Case "Kundendaten", "Berechnung", _
                 "Daten 10er", "Daten 12er"
                 'Nichts tun
            Case Else
                 ComboBox1.AddItem wsTabelle.Name
        End Select
    Next wsTabelle
    
    ComboBox1.ListIndex = 0
    End Sub
    
    Gruß, René
     
  7. bahnrat

    bahnrat Kbyte

    Eine weitere Möglichkeit wäre, die Visible-Eigenschaft zu nutzen.

    Code:
    Private Sub UserForm_Activate()
        TextBox1 = 1
        
    For Each wsTabelle In ThisWorkbook.Worksheets
     
          If wsTabelle.Visible = True Then _
             ComboBox1.AddItem wsTabelle.Name
    
    Next wsTabelle
    
    ComboBox1.ListIndex = 0
    End Sub
     
    Last edited: May 6, 2011
  8. Bander007

    Bander007 Byte

    Danke für deine Antwort,

    hab jetzt mal die visible Variante benutzt. klappt auch wunderbar.
     
Thread Status:
Not open for further replies.

Share This Page