Hallo zusammen,
ich nehme mir jeden Tag ein neues Thema vor. Ich habe heute in meinem Archiv die Excel Multipage gefunden. Ist es möglich, je Page, auch eine Listbox einzufügen? Datei hänge ich an.
Gruß
Marcus
Hi Marcus,
erst mal grundsätzlich ja. Stehen in der Datei noch weitere Anforderungen?
Ich lade mir Dateien in der Regel erst runter, wenn ich es für mich als absolut notwendig empfinde. Ansonsten halte ich mich erst mal an die Texte in den Beiträgen und versuche das Problem auszudiskutieren.
Hallo André,
Es handelt sich hier nur um Die Multipage ... auf Tabellennamen bezogen ... und in jeder Tabelle stehen 5 Namen, welche in der Listbox aufgeführt werden sollen.
Code hinter der Userform:
Private Sub UserForm_Initialize()
Dim i As Integer
Dim x As Integer
x = 1
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Übersicht" Then
x = x + 1
Else
MultiPage1.Pages(i - x).Caption = Worksheets(i).Name
End If
Next
Me.MultiPage1.Value = Shname - 1
End Sub
Danke
Marcus
Hi Marcus,
dann gibt es auch wieder mehrere varianten, z.B. die Listboxen fest zu platzieren und die Bereiche ebenfalls, dann könnte man die Bereiche variabel halten und man könnte auch die Listboxen erst zur Laufzeit erzeugen, die Multipage-Seiten ebenso, usw..
Hier mal eine Variante. Du erzeugst ein Userform mit einer Multipage und löschst von der Multipage alle Seiten.
Code:
Private Sub UserForm_Initialize()
Dim blaetter As Worksheet
For Each blaetter In ThisWorkbook.Worksheets
With MultiPage1
.Add (blaetter.Name)
With .Pages(blaetter.Name).Add("Forms.Listbox.1")
.Left = 6
.Top = 6
.Height = 100
.Width = 150
.RowSource = blaetter.Name & "!" & blaetter.Range("A1:A5").Address
End With
End With
Next
End Sub
In diesem Fall würde ich ein Tabstrip statt Multipage verwenden:
PHP-Code:
Private Sub UserForm_Initialize()
For Each it In Sheets
TabStrip1.Tabs(it.Index - 1).Caption = it.Name
Next
ListBox1.List = Sheets(1).Cells(1).CurrentRegion.Value
End Sub
Private Sub TabStrip1_Change()
ListBox1.List = Sheets(TabStrip1.Value + 1).Cells(1).CurrentRegion.Value
End Sub
Hallo André,
Du fehlst mir an meiner Seite.
Wieso bekomme ich, obwohl ich den alten Code abgewählt habe, jetzt alle Tabellenblätter doppelt angezeigt? Einmal auf engliscch einmal auf Deutsch. Bei der Deutschen Variante werden mir wirklich Listboxen angezeigt.
Gruß
Marcus
Danke snb,
das ist für mich ganz neu. Ich beschäftige mich mal damit.
Gruß
Marcus
Multipage approach:
PHP-Code:
Private Sub UserForm_Initialize()
For Each it In Sheets
With MultiPage1.Pages(it.Index - 1)
.Caption = it.Name
With .Add("Forms.Listbox.1")
.Left = 0
.Top = 0
.Height = .Parent.Parent.Height
.Width = .Parent.Parent.Width
.List = it.Cells(1).CurrentRegion.Value
End With
End With
Next
End Sub
Hallo,
mit
Zitat:Dim it As Object
klappt es. Ich habe überall Option explicit drin stehen.
Danke!!!
Gruß
Marcus
hI Marcus;
Zitat:Wieso bekomme ich, obwohl ich den alten Code abgewählt habe, jetzt alle Tabellenblätter doppelt angezeigt? Einmal auf englisch einmal auf Deutsch.
ich schrieb
Zitat:Du erzeugst ein Userform mit einer Multipage und löschst von der Multipage alle Seiten.
Du müsstest von Deiner Multipage also erst mal alle Seiten löschen. Ich erzeuge die mit meinem Code neu. Ansonsten, wenn Du die Seiten vorhältst, könntest Du ja auch die Listboxen vorhalten und brauchst keinen Code bzw. nur dann einen Code, um ggf. auf veränderte darzustellende Datenmengen zu reagieren.
Hallo André,
das probiere ich aus. Habe nicht richtig gelesen. Danke.
Gruß
Marcus
Hallo André,
dein kleiner Code ist super. Der lässt sogar neue Tabellenblätter zu. Danke vielmals!!!!
Gruß
Marcus