HERBERS Excel-Forum - das Archiv

Thema: Tabellenarray an Tag der Ufrm übergeben | Herbers Excel-Forum

Tabellenarray an Tag der Ufrm übergeben
Peter

Hallo Forum,
ich möchte bestimmte Tabellenblätter, die als Array zusammengefasst sind,
einer Variable zuordnen.
Diese Variable soll bei Aufruf der Ufrm durch eine
Schaltfläche der Tag Eigenschaft der Ufrm übergeben werden und entsprechende
Tabellenblätter ein bzw. ausblenden.
Geht das überhaupt? Bisher habe ich diesen Vorgang mit einer Suche mit ForEach
erledigt.
Wenn es irgendwie geht würde ich mich über ein kleines Bsp. mit kurzer Erklärung
(zum Nachvollziehend des Vorganges) sehr freuen.
Danke Peter
Sub Makro2()
' Makro2 Makro
' Makro am 06.12.2009 aufgezeichnet
Sheets(Array("Vorl Z 13", "Vorl Z eS 01", "Vorl Z 09", "Vorl Z 08", "Vorl Z 07", _
"Vorl Z 06", "Vorl Z 05", "Vorl Z 04", "Vorl Z 02 ", "Vorl Z 01")).Select
Sheets("Vorl Z 01").Activate
ActiveWindow.SelectedSheets.Visible = False
End Sub

AW: Tabellenarray an Tag der Ufrm übergeben
Nepumuk

Hallo,
ein Beispiel:
In einem Standardmodul:
Option Explicit

Public Sub Beispiel()
    With UserForm1
        'hier werden die Sheets an die SheetArray-Eigenschaft des Userforms übergeben
        Set .SheetArray = Worksheets(Array("Tabelle1", "Tabelle2", "Tabelle3"))
        'Userform anzeigen
        .Show
    End With
End Sub

Im Modul des Userforms:
Option Explicit

Private mobjSheetArray As Sheets

Friend Property Set SheetArray(objSheetArray As Sheets)
    Set mobjSheetArray = objSheetArray
End Property

Private Sub CommandButton1_Click()
    Dim objSheet As Object
    'Einblenden
    For Each objSheet In mobjSheetArray
        objSheet.Visible = True
    Next
End Sub

Private Sub CommandButton2_Click()
    Dim objSheet As Object
    'Ausblenden
    For Each objSheet In mobjSheetArray
        objSheet.Visible = False
    Next
End Sub

Ein Userform ist eine Klasse (ein Objekt) und du kannst einer Klasse eigene Eigenschaften geben. In diesem Fall ist die Eigenschaft selbst wieder ein Objekt, nämlich dein Array aus Sheets. Um dieses Array zu füllen, benötigst du eine Property-Set Prozedur (Property~Eigenschaft).
Gruß
Nepumuk
AW: Danke Nepumuk
Peter

Vielen Dank für die Erklärung und dem Beispiel.
Peter