Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: lochhocker am März 02, 2015, 20:43:30 Nachmittag
-
Ahoi,
ich bin leider keine Leuchte in Excel, geschweige denn VBA und deswegen hoffe ich, dass einer von euch mir hier hilfreiche Tipps geben kann.
Kurz zu meiner Situation:
Ich habe eine Mappe mit X Blättern.
Jetzt habe ich mir auf Blatt 1 notwendige Berechnungen hingeschrieben und Grafiken, die ich so brauche.
Ab Blatt 2 stehen in den Spalten A,B,C dann verschiedene Messergebnisse. Für jeden Versuch quasi ein neues Blatt.
Nun würde ich gerne mit Hilfe eines Dropdown-Menüs, bzw. einer Combobox auf diese Versuche 1,2....X zu greifen, so dass auf Blatt 1 dann das ausgewählte Blatt mit den dazugehörigen Messdaten in A,B,C steht.
Bisher habe ich nur durch viel rumprobieren und lesen hinbekommen, dass ich eine solche Combobox habe mit den Namen der einzelnen Blätter:
Private Sub Workplace_open()
Dim i as Integer
Combobox21.clear
For i=2 to Sheets.count
Combobox21.AddItem Sheets(i).Name
Next i
End Sub
Aber auf das, was ich eigentlich vorhabe, bin ich leider bisher nicht gekommen und hab auch ehrlich gesagt keine Idee.
Falls es irgendwie anders und einfacher geht, finde ich das natürlich auch gut.
Bei der Combobox, die ich oben beschrieben habe, habe ich zudem das Problem, dass die Auswahl nach einem Neustart von Excel immer weg ist und ich sie erst im VBA-Editor starten muss.
Vielen Dank schon mal im Voraus!
MfG
Lochi
-
hallo
ich habe da mal als "übung" etwas nachgedacht...
1. ich kenne nur workbook_open
2. es handelt sich wohl um eine active X Combo
3. im Private Sub NNNN_Change() Event könnte der gewählte Wert abgefragt werden (list.index....)
4. ggf der (letzte) Wert in einer Zelle gespeichert werden
5. im workbook_open auch den letzten ausgewählten wert setzen (... selected = true ... so ungfähr...
6. in dem ersten Blatt dann die entsprechenden Zellen als Formeln mit Verweisen unter Verwendung des gewählten Namens konstruieren , etwa ... =INDIREKT(A1&"!A" & ZEILE(A3)) ..... wenn in A! der gewählte Tabellenname steht
.... die weiteren Spalten analog ( berechnet....damit sie durch autoausfüllen erzeugt werden können.)
Vielleicht hilft es
kgs
-
Hallo, erstmal danke für deine Tipps.
Ich habe es jetzt wie folgt gemacht:
Private Sub Worksheet_Activate()
ComboBox21.ListIndex = 0
End Sub
Private Sub ComboBox21_Change()
If ComboBox21.ListIndex > 0 Then Worksheets("Tabelle1").Range("A6:C46").Value = Worksheets(ComboBox21.Value).Range("A1:C41").Value
End Sub
Was auch soweit gut funktioniert. Ist vielleicht nicht die eleganteste Lösung.
Edit: Jetzt komme ich aber schon zum nächsten Problem:
1. Ich habe jetzt eine zweite Combobox, die mit der ersten unmittelbar zusammen hängen soll.
Diese läuft über
Private Sub Combobox22_change()
Dim arrDaten
Dim lngLetzte As Long
With Worksheets("Liste")
lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
arrDaten = .Range(.Cells(1, 2), .Cells(lngLetzte, 10))
ComboBox22.List = arrDaten
End With
Diese Liste beinhaltet dann passende Elemente für die erste Combobox.
Sprich: Ich wähle in der ersten Combobox ein Element aus und er soll mir in Box2 das dazugehörige Element ausgeben.
In dieser Liste stehen die dazugehörigen Elemente in einer Reihe in verschiedenen Spalten.
Wie verbinde ich nun also diese Elemente?
2. Ich würde gerne die Funktion einbauen, dass ich, wenn ich in dieser Liste ein neues Element eintrage, dass dann automatisch ein neues Blatt erschaffen wird mit dem dazugehörigen Namen aus Spalte B, als Beispiel.
Da weiß ich leider auch nicht weiter.
Vielen Dank im Vorraus
Edit2: Problem mehr oder weniger gelöst.
Relativ einfach mit ComboBox22.ListIndex = ComboBox21.ListIndex - 1. Das ganze noch mal umdrehen klappt leider nicht, ist aber auch nicht unbedingt notwenig.