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

Code anpassen mal wieder! | Herbers Excel-Forum


Betrifft: Code anpassen mal wieder! von: Thomas
Geschrieben am: 20.02.2012 14:47:08

Hallo Excelfreunde,

ich habe mir hier aus dem Forum vor längerem mal einen Code heraus gespeichert man könnte ihn mal brauchen, was nun auch so ist.
Per Userform kann man die Tabellenblätter wählen die gedruckt werden sollen. Ich will nicht alle Blätter die in der Mappe sind angezeigt bekommen sonder nur bestimmte die ich im Code benennen gern würde.
Nur wo und wie das ist mein Problem.

Hier er Code:

Option Explicit

Private Sub cmdAll_Click()
Dim intIndex As Integer
With ListBox1
  For intIndex = 0 To .ListCount - 1
    .Selected(intIndex) = True
  Next
End With
End Sub

Private Sub cmdCancel_Click()
Unload Me
End Sub

Private Sub cmdNone_Click()
Dim intIndex As Integer
With ListBox1
  For intIndex = 0 To .ListCount - 1
    .Selected(intIndex) = False
  Next
End With
End Sub

Private Sub cmdPrint_Click()
Dim strSheets() As String
Dim intIndex As Integer, intN As Integer
With ListBox1
  For intIndex = 0 To .ListCount - 1
    If .Selected(intIndex) Then
      ReDim Preserve strSheets(intN)
      strSheets(intN) = .List(intIndex)
      intN = intN + 1
    End If
  Next
End With

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

Private Sub cmdToggle_Click()
Dim intIndex As Integer
With ListBox1
  For intIndex = 0 To .ListCount - 1
    .Selected(intIndex) = Not .Selected(intIndex)
  Next
End With
End Sub

Private Sub UserForm_Initialize()
Dim intIndex As Integer
For intIndex = 1 To ThisWorkbook.Worksheets.Count
  ListBox1.AddItem ThisWorkbook.Worksheets(intIndex).Name
Next
End Sub
Gruß Thomas aus Stuttgart

  

Betrifft: AW: Code anpassen mal wieder! von: Mark
Geschrieben am: 20.02.2012 15:44:40

Hallo Thomas,
willst Du die Listbox im Form anpassen?
Wenn ja ist das im der SUB UserForm_Initialize() realisiert.
Die For Schleife durchläuft alle Sheets und legt eine Item in der Listbox an (Name des Blattes).
Gruß
Mark


  

Betrifft: AW: Code anpassen mal wieder! von: Thomas
Geschrieben am: 20.02.2012 15:59:59

Hallo Mark,

ich möchte eben nicht alle Tabellenblätter in der Listbox sonder nur Tab 1,5,6 und 7. Derzeit habe ich alle 7 Blätter in der Listbox.
Ich habe es auch schon versucht das Tab 2,3 und 4 auszublenden aber das bring nichts.

Gruß Thomas aus Stuttgart


  

Betrifft: AW: Code anpassen mal wieder! von: Tino
Geschrieben am: 20.02.2012 16:31:17

Hallo,
vielleicht geht es so, zwei Varianten mit Index oder mit Namen.

Private Sub UserForm_Initialize()
Dim intIndex As Integer, ArrayTabs()

'mit Tabellen Index
ArrayTabs = Array(1, 5, 6, 7)

''oder mit Tabellenname
'ArrayTabs = Array("Tabelle1", "Tabelle5", "Tabelle6", "Tabelle7")

For intIndex = LBound(ArrayTabs) To UBound(ArrayTabs)
  'mit Index
  ListBox1.AddItem ThisWorkbook.Worksheets(ArrayTabs(intIndex)).Name

'  'oder mit Namen
'  ListBox1.AddItem ArrayTabs(intIndex)
Next
End Sub
Gruß Tino


  

Betrifft: AW: Code anpassen mal wieder! von: Thomas
Geschrieben am: 20.02.2012 16:53:11

Hallo Tino,

Nagel auf den Kopf getroffen. Super Danke funzt prima.

Gruß Thomas


Beiträge aus den Excel-Beispielen zum Thema "Code anpassen mal wieder!"