[Excel VBA] Text aus ausgewähltem Dropdownmenü eintrag kopieren

fanatiXalpha

Fleet Admiral
Registriert
Aug. 2011
Beiträge
13.665
Tag Leute,

meine Frage steht eigentlich schon oben.
Habe ein Dropdownmenü mit Einträgen die allesamt Tabellennamen sind.
Um es mir einfach zu machen wollte ich diesen Text nehmen und an einen Tabellenblattaufruf weiter geben.
Leider klappt diese Übergabe nicht so wie ich es mir vorgestellt habe...

Der Code dazu sieht folgendermaßen aus:
Code:
Private Sub VergleichenButton_Click()

Dim Selected_Worksheet_1 As String
Dim Selected_Worksheet_2 As String

ComboBox1.Text = Selected_Worksheet_1
ComboBox2.Text = Selected_Worksheet_2


'Übertragen der Daten aus ausgewähltem Arbeitsblatt in die Tabelle des "Comparsion"-Arbeitsblattes
ThisWorkbook.Worksheets("Selected_Worksheet_1").Range("B5:I12").Copy
ThisWorkbook.Sheets("Comparsion").Range("Y7:AF14").PasteSpecial



ThisWorkbook.Worksheets("Selected_Worksheet_2").Range("B5:I12").Copy
ThisWorkbook.Sheets("Comparsion").Range("Y28:AF35").PasteSpecial


End Sub

Die beiden Variablen Selected_Worksheet_1 & 2 sind aber leer, bzw. bekomme ich dann den Fehler, dass der Index außerhalb des gültigen Bereichs wäre und beim Debuggen wird mir die erste Zeile markiert in der das erste Tabellenblatt ausgewählt wird.


Ich habe eine Mappe mir mehreren Arbeitsblätter/Tabellen. Um die verschiedenen Tabellen etwas einfacher und übersichtlicher vergleichen zu können habe ich ein zusätzliches Arbeitsblatt erstellt wo verglichen werden kann.
Mittels eines Dialogfensters kann ich über zwei Dropdownmenüs die Tabellen auswählen die ich vergleichen möchte.
Das klappt auch wunderbar, in den Dropdownmenüs sind alle Tabellen drin.
Nur eben der oben angesprochene Punkt funktioniert nicht.
Wenn ich statt der Variablen direkt einen Namen einer Tabelle eintrage funktioniert auch das ohne Probleme.
Nur das Auswählen aus dem Dropdownmenü klappt nicht

Ich hoffe ihr könnt mir auf die Sprünge helfen, weil das der einzige Punkt ist, weshalb mein kleines VBA-Projekt nicht fertig ist :(

Das Problem war, dass ich die Zuweisung scheinbar falsch gemacht hab (scheinbar weil ich die zweite Methode eingesetzt habe weil weniger Code)
Statt
Code:
ComboBox1.Text = Selected_Worksheet_1
hätte ich
Code:
Selected_Worksheet_1= ComboBox1.Text
schreiben sollen.

Letztendlich habe ich
Code:
ComboBox1.Text
direkt in die Tabellenblattzuweisung geschrieben.
Also
Code:
ThisWorkbook.Worksheets(ComboBox1.Text).Range("B5:I12").Copy
 
Zuletzt bearbeitet:
Natürlich sind die leer, hast den Variablen ja auch keine Werte zugewiesen. Wofür soll Dim Selected_Worksheet_1 As String eigentlich gut sein?
 
Ja, ich dachte die Zuweisung funktioniert auch so rum, tut sie ja aber nicht^^

Dachte ich kann das nicht direkt zuweise, was ebenfalls ein Denkfehler war bzw. wusste ich nicht, welche Möglichkeiten bietet mir Excel VBA.
Um die Länge eines Arrays zu bekommen muss ich in VBA es ja berechnen statt das es einfach eine Funktion gibt die mir das ausgibt
wie Arrayname.Length
Oder ich hab diese Funktion noch nicht gefunden
 
Warum über VBA?
Warum baust du dir nicht mittels INDIREKT und dem Blattnamen einen Verweis zusammen?
 
Wieso nicht?
Hast du gelesen was ich damit erreichen will?
Es geht hier nicht nur um ein Blatt, sondern mehrere und es ist bis jetzt noch nicht abzusehen wieviele das werden.
Insofern ist die Funktion "INDIREKT" zu starr für meine Bedürfnisse.
 
Zuletzt bearbeitet:
Je nachdem wie du das Dropdownmenü füllst. Indirekt ist hierbei nicht starr sondern übernimmt lediglich den ausgewählten Textstring aus dem Dropdown. nicht mehr
 
Sollst du ja auch nicht... aber Neues kann man immer lernen ;)
 
Hier mal ein kleines Beispiel.

Übersicht1
Dropdown statisch
Tabelleneinträge kann man mittels VBA automatisch anpassen an die vorhandenen Blätter

Übersicht2
Dropdown wird automatisch an die Tabelle angepaßt wenn neue Einträge hinzukommen
Tabelle mit Tabelleneinträgen kann man mittels VBA automatisch anpassen an die vorhandenen Blätter



Anhang anzeigen Indirekt.xlsx
 
Zurück
Oben