Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Über Listeneinträge Arbeitsblätter ansprechen


Betrifft: Über Listeneinträge Arbeitsblätter ansprechen von: Robson
Geschrieben am: 11.08.2016 14:58:04

Hallo,
ich komme gerade nicht wirklich weiter und hoffe, ihr habt einen Tipp für mich. Ich habe mir in einer Userform zwei Listenfelder angelegt. Im ersten Listenfeld werden alle Arbeitsblätter der Arbeitsmappe eingelesen und als Namen in die Liste aufgenommen. Hieraus kann ich dann auswählen, welche Einträge (also Arbeitsblattnamen) in das zweite Listenfeld übertragen werden. Das klappt soweit auch.
Jetzt möchte ich aber mit der jeweiligen Auswahl im zweiten Listenfeld etwas anstellen z.B. einen Druck der Arbeitsblätter einleiten (bzw. Druckvorschau: Ein Dokument für alle ausgewählten Arbeitsblätter). Da hapert es leider gerade... Ich müsste doch irgendwie aus den Einträgen der zweiten Liste (Namen) wieder Arbeitsblätter ansprechen und das dann in einer Schleife für jeden Listeneintrag abarbeiten, oder?
Hat jemand einen Tipp für mich, würde mich sehr freuen :-) Vielen Dank im Vorfeld Robson

  

Betrifft: AW: Über Listeneinträge Arbeitsblätter ansprechen von: Sepp
Geschrieben am: 11.08.2016 22:03:01

Hallo Robson,

das geht vom Prinzip her z. B. so.

Private Sub cmdPrint_Click()
Dim strSheets() As String
Dim intIndex As Integer, intN As Integer

With ListBox1 'Name der Listbox anpassen!
  For intIndex = 0 To .ListCount - 1
    Redim Preserve strSheets(intN)
    strSheets(intN) = .List(intIndex)
    intN = intN + 1
  Next
End With

If intN > 0 Then
  Me.Hide
  ThisWorkbook.Sheets(strSheets).PrintPreview 'Druckvorschau
  'ThisWorkbook.Sheets(strSheets).PrintOut 'Drucken
  Me.Show
End If
End Sub


Gruß Sepp



  

Betrifft: AW: Über Listeneinträge Arbeitsblätter ansprechen von: Robson
Geschrieben am: 12.08.2016 10:46:43

Hallo Sepp,
erstmal danke für deine große Hilfe. Ich hab es damit ans Laufen gebracht. Das ist super.

Einige Gedanken kamen mir bei der Bearbeitung noch:
1. ich möchte, dass die Userform nach dem Druck bzw. der Druckvorschau automatisch schließt (Im Moment ist Sie noch offen). Wie und an welcher Stelle (im cmd Drucken Makro?)kann ich das berücksichtigen?
2. Ebenfalls wäre es super, wenn das zweite Listenfeld nach dem Druck der ausgewählten Blätter wieder automatisch geleert wird. Hast Du eine Idee?
3. Wenn ich für die Auswahl aus Liste 2 über einen weiteren Command Button direkt ein PDF erzeugen möchte statt eines Ausdrucks, wie könnte dann ein code-beispiel lauten?
Besten Dank und ein schönes Wochenende
Robson


  

Betrifft: AW: Über Listeneinträge Arbeitsblätter ansprechen von: Sepp
Geschrieben am: 12.08.2016 21:16:46

Hallo Robson,

zu 1: Statt Me.Show, Unload Me

Zu 2: ListBox1.Clear

Zu 3:

Private Sub cmdPDF_Click()
Dim strSheets() As Variant
Dim intIndex As Integer, intN As Integer

With ListBox1 'Name der Listbox anpassen!
  For intIndex = 0 To .ListCount - 1
    Redim Preserve strSheets(intN)
    strSheets(intN) = .List(intIndex)
    intN = intN + 1
  Next
End With

If intN > 0 Then
  Application.EnableEvents = False
  Application.ScreenUpdating = False
  Me.Hide
  ThisWorkbook.Sheets(strSheets).Copy
  
  With ActiveWorkbook
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Dein Pfad\Dateiname.pdf", _
      Quality:=xlQualityStandard, IncludeDocProperties:=True, _
      IgnorePrintAreas:=False, OpenAfterPublish:=False
    .Close False
  End With
  Application.EnableEvents = True
  Application.ScreenUpdating = True
  Unload Me
End If
End Sub


Gruß Sepp



Beiträge aus den Excel-Beispielen zum Thema "Über Listeneinträge Arbeitsblätter ansprechen"