Per Listboxeintragauswahl neue Arbeitsmappe öffnen

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Per Listboxeintragauswahl neue Arbeitsmappe öffnen

    Hallo!

    Da ich mich aufgrund meines Studiums im Rahmen eines selbst zu erstellenden Projektes nun das erste Mal mit VBA befassen muss, bin ich nun fleißig am erlernen neuer Funktionen und Begriffe in diesem Bereich. Durch Internet-Recherche und Try and Error-Methodik bin ich auch schon ziemlich gut vorangekommen, aber jetzt bin ich leider an einem Punkt, an dem ich nicht weiterkomme, und bisher auch nicht in diversen Foren eine Antwort gefunden habe.

    Lang Rede, kurzer Sinn: Ich habe eine Listbox erstellt, die mit diversen Begriffen gefüllt ist. Nun soll beim Anklicken eines Begriffs eine jeweils dazu passende neue Arbeitsmappe geöffnet werden (Es geht um ein Programm für die Erstellung von Rechnungen und wenn Kunde A aus der Listbox ausgewählt wird, soll auch die Arbeitsmappe für Kunde A geöffnet werden, für Kunde B die Arbeitsmappe B usw.)

    Bisher hab ich diesen Code dafür

    Private Sub VRKUAGLISTB_Click()
    Workbooks.Open "C:\Users\Anja\Desktop\VBA-Projekt\Vorgefertigte Rechnungen_Ahrendt"
    End Sub


    aber das Problem ist halt, das eben nicht der Klick nach Kunde selektiert ist, sondern eben allgemein für die Listbox (VRKUAGLISTB) aber wenn der Kunde "Ahrendt" ausgewählt wird soll seine spezielle Arbeitsmappe ausgewählt werden und wenn ich nen anderen wähle, dann eben auch eine andere Arbeitsmappe

    Wäre toll, wenn mir jemand helfen könnte. Vielen Dank schonmal im Voraus!
    In ListBox.Value steht der ausgewählte Name.
    Den übergibst du der Open-Methode.

    Ganz rudimentär:

    Visual Basic-Quellcode

    1. Private Sub Listbox1_Click()
    2. Set wb = Workbooks.Open("C:\Users\Anja\Desktop\VBA-Projekt\Vorgefertigte Rechnungen_" & Listbox1.Value)
    3. wb.Sheets(1).Select
    4. End Sub
    Ein wenig Error-Handling sollte natürlich schon noch dabei sein.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --