Userform:Tabelle auswählen - Spalten auswählen

Hallo,

folgendes Problem:
Ich benötige ein Makro damit ich aus vielen Tabellen, die ähnlich aufgebaut sind, einzelne oder mehrere selektieren kann.
Habe bisher ein Combobox dafür entworfen und danach soll nochmals eine combox/listbox für die Spalteninhalte (auswahlreferenz Überschrift der spalten) auswählbar sein.
Das ganze soll dann in ein extratabellenblatt importiert werden damit ich später ein diagramm mit den daten erstellen kann.

Wäre super nett wenn ihr mir helfen könntet

Gruß
Heko

folgendes Problem:
Ich benötige ein Makro damit ich aus vielen Tabellen, die
ähnlich aufgebaut sind, einzelne oder mehrere selektieren
kann.
Habe bisher ein Combobox dafür entworfen und danach soll
nochmals eine combox/listbox für die Spalteninhalte
(auswahlreferenz Überschrift der spalten) auswählbar sein.
Das ganze soll dann in ein extratabellenblatt importiert
werden damit ich später ein diagramm mit den daten erstellen
kann.

Hi Heko,
verstehe ich das richtig, in der ersten Combobox willst du das Blatt auswählen, daraufhin soll in der zweiten Combobox die Auswahl unter den Spaltenüberschriften des ausgewählten Blattes wählbar sein, und dann soll diese Spalte EXportiert werden in neues Blatt, wo dann aufgrund des Spalteninhaltes ein Diagramm erstellt wird ?
Gruß
Reinhard

Hallo Reinhard,

du hast es total richtig verstanden, kannst du mir weiterhelfen?

Gruß Heko

du hast es total richtig verstanden, kannst du mir
weiterhelfen?

Hi Heko,
ja, sieht machbar aus. Mal schauen wann ich dazu komme das anzugehen.
Zwischenzeitlich könntest du mal hier im Archiv nach
dynamisch bzw. dynamische
forschen, entwedr hier oder im Tabellenkalkulationsbrett habe ich schon mehrmals so Code gepostet, wo z.B. in einer Combobox die Buchstaben von A-Z auswählbar sind, daraufhin wird dann in der zweiten Combobox nur das angezeigt was mit dem gewählten Buchstaben beginnt.
Sowas müßte man ja nur leicht umbasteln.
Gruß
Reinhard
Gruß
Reinhard

Danke Reinhard,

werde ich machen.

Gruß
Heko

Dynamisch befüllte Comboboxen Excel VBA
Hi Heko,
du brauchst drei Blätter mit den Namen Tabelle1, Diagramm, Hilfsblatt.
Wenn du sie anders nennen willst mußt du das in den Codes anpassen.

Weiterhin brauchste aus SteuerelementToolbox zwei ComboBoxen in Tabelle1, mit den Namen ComboBox1 und ComboBox2

Im Dokumentmodul „DieseArbeitsmappe“ :

Option Explicit
Private Sub Workbook_Open()
Nicht = True
Call Aktualisieren
Nicht = False
End Sub

im Dokumentmodul „Tabelle1“ :

Option Explicit

Private Sub ComboBox1\_Change()
If Nicht = True Then Exit Sub
Dim Spa As Integer, Zei As Long, wsH As Worksheet
Set wsH = Worksheets("Hilfsblatt")
Nicht = True
With Worksheets(ComboBox1.Value)
 For Spa = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
 Zei = Zei + 1
 'hier wird trotz enableevents=false Combobox2\_change ausgeführt, deshalb "Nicht"
 wsH.Cells(Zei, 2) = .Cells(1, Spa)
 Next Spa
 ComboBox2.ListFillRange = "Hilfsblatt!B1:B" & Zei
 ComboBox2.Value = ""
End With
Nicht = False
End Sub


Private Sub ComboBox2\_Change()
If Nicht = True Then Exit Sub
Nicht = True
Dim Spa As Integer, wsH As Worksheet
Set wsH = Worksheets("Hilfsblatt")
With Worksheets("Tabelle1")
 'wsH.Activate
 'Spa = Application.WorksheetFunction.Match(.ComboBox2.Value, wsH.Range("B:B"), 0)
 Spa = ComboBox2.ListIndex + 1
End With
Worksheets("Diagramm").Activate
With Worksheets(ComboBox1.Value)
 .Columns(Spa).Copy Destination:=Worksheets("Diagramm").Range("A1")
End With
Nicht = False
End Sub

In einem Standardmodul " Modul1":

Option Explicit
Public Nicht As Boolean

Sub Aktualisieren()
Dim ws As Worksheet, Zei As Long
With Worksheets("Hilfsblatt")
 For Each ws In Worksheets
 Select Case ws.Name
 Case "Tabelle1", "Hilfsblatt", "Diagramm"
 'nix tun
 Case Else
 Zei = Zei + 1
 .Cells(Zei, 1) = ws.Name
 ws.Visible = xlSheetHidden 'mich nerven zuviele geöffnete Blätter ungemein
 End Select
 Next ws
 Worksheets("Tabelle1").ComboBox1.ListFillRange = "Hilfsblatt!A1:A" & Zei
End With
End Sub

''Function Spalte(ByVal Spa As Integer) As String
''Spalte = Mid(Cells(1, Spa).Address, 2)
''Spalte = Left(Spalte, InStr(Spalte, „$“) - 1)
''End Function

Gruß
Reinhard

1 Like

Hallo Reinhard,

funktioniert wirklich gut.
Ich muß noch eine paar gewisse Dinge umstellen, aber mein Problem ist damit gelöst.
Vielen Dank für die schnelle Hilfe.

Gruß
Heko