Weitere Exceltabellen per Auswahlliste öffnen

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von MissLeela.

    Weitere Exceltabellen per Auswahlliste öffnen

    Hallo zusammen,

    ich habe zwei Fragen zu einer Exceldatei, vielleicht kann mir da jemand helfen:

    Ich hab eine Tabelle, in der in einer bestimmten Zelle (A3) per Auswahlliste ein Name ausgewählt werden kann. Je nachdem welcher Name dort ausgewählt wird, öffnen sich dann zwei weitere Exceldateien. Hier das Makro dazu:

    Private Sub worksheet_Change(ByVal Target As Range)
    If ThisWorkbook.Sheets("Tabelle1").Range("A3").Value = "NameA" Then
    Workbooks.Open Filename:="C:\Desktop\Testdateien\NameA_Liste1.xls"
    Workbooks.Open Filename:="C:\Desktop\Testdateien\NameA_Liste2.xls"
    End If
    If ThisWorkbook.Sheets("Tabelle1").Range("A3").Value = "NameB" Then
    Workbooks.Open Filename:="C:\Desktop\Testdateien\NameB_Liste1.xls"
    Workbooks.Open Filename:="C:\Desktop\Testdateien\NameB_Liste2.xls"
    End If
    End Sub

    Das funktioniert auch alles so weit, aber

    1. Ich möchte die Auswahlliste nicht nur in der Zelle A3 haben, sondern in mehreren untereinander, also z.B. von A3 bis A8. Ich hatte versucht einfach nur den Bereich Range(„A3:A8“) anzugeben, aber das funktioniert nicht.

    2. Wenn sich die beiden zusätzlichen Exceldateien geöffnet haben und ich dann in die Ursprungsdatei zurück gehe und irgendwo in einer Zelle was eingebe und Enter drücke, dann schiebt sich automatisch wieder die durch das Makro zuletzt geöffnete Datei in den Vordergrund. Ich möchte aber, dass diese im Hintergrund bzw. minimiert bleibt, solange ich sie nicht selbst unten aus der Leiste anklicke und aufrufe.

    Danke schon mal für Eure Hilfe.
    Gruß
    Miss Leela
    Zu 1.: Ist das ne ComboBox? ListBox? Oder ganz was anderes, also gar kein CE? Falls Du es nicht weißt, lad mal über [Erweiterte Antwort] einen Screenshot bitte hoch.
    Zu 2.: Das liegt daran, dass Du die Ausführung Deiner öffne-mir-die-Workbooks-Anweisungen im falschen EventHandler hast, nämlich Private Sub worksheet_Change. Egal, was Du dann am Worksheet änderst (z.B. Werte in ner Zelle einrtragen), es wird dann immer diese Workbooks-Öffnen-Funktion ausgeführt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    Hallo VaporiZed,

    anbei der Screenshot zu Punkt 1. Wie das nun richtig heißt weiß ich nicht.

    Zu Punkt 2: Ok, muss ich nur einen anderen EventHandler nutzen oder funktioniert das so dann überhaupt nicht mit dem Makro, welches ich da hab?

    Danke und Gruß!
    Dateien
    • Auswahlliste.docx

      (23,47 kB, 10 mal heruntergeladen, zuletzt: )
    Ein Bild direkt hochzuladen wäre einfacher gewesen. Dann kann man das nämlich auch im Forum sehen. Ich bin mal so frei.
    Leider erkenne ich nicht, welches CE das ist. Schade. Wenn es ein VBA-CE (ActiveX) ist, könntest Du Dein Workbook-Öffne-Dich-Sub mit einem passenden CE-Event verbinden. Ist es ein Formularsteuerelement ginge das über das Kontextmenü bei »Makro zuweisen ...«
    Ist es Dir möglich, Deine Exceldatei hochzuladen? Am besten ohne den Code. Dann könnten wir das schnell ermitteln und festmachen, wohin Deine Workbook-Öffne-Dich-Sub kommen muss.
    Bilder
    • Screenshot.png

      38,59 kB, 962×196, 11 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Ah, ok. Ganz ohne CEs, sondern per "Datenüberprüfung". Auch gut. Dann kannst Du grundsätzlich doch den Code in Deinem worksheet-Change-EventHandler lassen, musst dann eben nur angeben, dass nur dann was passieren soll, wenn Target (das ist der Bereich, der geändert wurde) im entsprechenden Bereich liegt:

    Visual Basic-Quellcode

    1. Private Sub Worksheet_Change(ByVal Target As Range)
    2. If Target.Column <> 1 Or Target.Row < 3 Or Target.Row > 8 Then Exit Sub

    Und statt sowas wie If ThisWorkbook.Sheets("Tabelle1").Range("A3").Value = "NameA" Then verwendest Du eben If Target.Value = "NameA" Then.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«