Office: Seite wechseln mit VBA

Helfe beim Thema Seite wechseln mit VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo meine Lieben! Ich hab folgendes Problem: Ich habe eine Mappe mit mehreren Arbeitsblättern, auf dem ersten Blatt ist ein Inhaltsverzeichnis... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von adpar, 13. Mai 2010.

  1. adpar Erfahrener User

    Seite wechseln mit VBA


    Hallo meine Lieben!

    Ich hab folgendes Problem:
    Ich habe eine Mappe mit mehreren Arbeitsblättern, auf dem ersten Blatt ist ein Inhaltsverzeichnis das über eine DropDown Auswahlliste (in Zelle A3) verfügt.
    Nun wollte ich über VBA ein Makro erstellen das bei einer Auswahl in der Dropdownliste zu der jeweiligen Seite springt.
    aber irgendwie bekomme ich den Code nicht richtig hin.
    Hier mal der Code:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If A3 = M1 Then Worksheets(Worksheets("Tabelle1").Range("b3").Value).Activate
    End Sub

    Da sagt er mir immer ich soll debuggen und markiert mir diese Zeile:
    (Worksheets("Tabelle1").Range("b3").Value).Activate

    Wär super wenn mir einer helfen könnte.

    MFG
    adpar
     
    adpar, 13. Mai 2010
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    Falls A3 bzw. M1 Arbeitsblattzellen bezeichnen, muss der Code umgestellt werden auf:
    Ferner muss in Zelle B3 des Arbeitsblattes 'Tabelle1' der Name eines Arbeitsblattes stehen.
     
    Exl121150, 13. Mai 2010
    #2
  3. adpar Erfahrener User
    Hay!
    Danke erst mal für deine schnelle Antwort.
    Ich hab den Code nun so umgestellt wie du es mir gesagt hast, aber er sagt mir immer noch debuggen (index außerhalb gültigen Bereichs):

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [A3] = [M1] Then Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate
    End Sub

    Tabelle2 ist das Inhaltsverzeichnis und in Zelle N1 hab ich Tabelle1!B3 reingeschrieben, da er ja dahin springen soll wenn Zelle A3 = Zelle M1 entspricht.
    Aber irgendwas stimmt da nicht oder ich stell mich einfach nicht schlau genug an.

    mfg
    adpar
     
    adpar, 13. Mai 2010
    #3
  4. schatzi Super-Moderator

    Seite wechseln mit VBA

    Hallo!

    Mit "Activate" aktivierst du das Blatt (Tabelle1), nicht aber eine Zelle (Tabelle1!B3).
    Also erst das Blatt anwählen mit "Activate", dann die Zelle ansteuern mit "Select".
     
    schatzi, 13. Mai 2010
    #4
  5. adpar Erfahrener User
    hay!
    hab den Code nun so geändert, allerdings sagt er mir immer noch das gleiche mit dem Index außerhalb des gültigen Bereichs:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [A3] = [M1] Then Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate.Select (b3)
    End Sub

    Markieren tut er mir immer noch den letzten Teil:
    Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate.Select (b3)

    kann man den letzten Teil nicht einfacher gestalten, ihm irgendwie sagen
    wenn A3=m1 dann spring nach Tabelle1 Zelle b3.

    mfg
    adpar
     
    adpar, 13. Mai 2010
    #5
  6. schatzi Super-Moderator
    Hallo!
    Logisch, denn Tabelle1!B3 ist ja auch kein Blattname!!
    Also erst Tabelle1 ansteuern und erst danach die Zelle wählen mit
    ActiveSheet.Range("B3").Select
     
    schatzi, 13. Mai 2010
    #6
  7. adpar Erfahrener User
    hay!
    hab es nun soweit geändert wie ich es verstanden hab, aber nun macht er gar nichts mehr:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [A3] = [M1] Then Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate.ActiveSheet.Range("B3").Select
    End Sub

    und wenn ich
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [A3] = [M1] Then Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate
    ActiveSheet.Range("B3").Select
    End Sub

    es so schreibe dann bleibt er mit der Markierung nur auf Zelle B3 in Tabelle2.
    Den Rest scheint er zu ignorieren. (in Zelle N1 steht Tabelle1, also der Name des Blattes wo er normalerweise hin soll.)

    mfg
    adpar
     
    adpar, 13. Mai 2010
    #7
  8. schatzi Super-Moderator

    Seite wechseln mit VBA

    Hallo!

    Ist denn A3=M1 ???
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [A3] = [M1] Then
    Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate
    ActiveSheet.Range("B3").Select
    End If
    End Sub
     
    schatzi, 13. Mai 2010
    #8
  9. adpar Erfahrener User
    manchmal!
    Ich hab in A3 eine DropDown-Liste erstellt mit den jeweiligen Blattnamen und wollte es so machen dass wenn man ein Name aussucht er automatisch in das Blatt reinspringt.
    Also in diesem Fall nach Tabelle1.
    Einfachheitshalber wollte ich ihm dann auch gleich sagen zu welcher Zelle in dem Blatt er springen soll um die optimale "leseposition" zu haben.

    mfg
    adpar

    Nachtrag:
    Bei deinem Lösungsvorschlag sagt er mir immer noch index außerhalb gültigen Bereichs.
    er markiert immer noch das gleiche:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [A3] = [M2] Then
    Worksheets(Worksheets("Tabelle2").Range("N1").Value).Activate
    ActiveSheet.Range("B3").Select
    End If
    End Sub
     
    adpar, 13. Mai 2010
    #9
  10. Exl121150 Erfahrener User
    Hallo,

    Du darfst in Zelle Tabelle2!N1 nur den Namen des Arbeitsblattes eingeben, in das Du springen willst, und sonst darfst Du absolut nichts anderes in diese Zelle eingeben:
    Also wenn Du in das Arbeitsblatt 'Tabelle3' springen willst und zwar in die Zelle B3 (sobald die Bedingung [A3]=[M2] erfüllt ist), so darfst Du in die Zelle Tabelle2!N1 nur das Wort 'Tabelle3' (ohne Hochkommas) eingeben und sonst nichts.
    Der Index-Fehler wird zwingend dadurch ausgelöst, weil Du in Tabelle2!N1 etwas anderes stehen hast als (bloß) den Namen eines existierenden Arbeitsblattes. Sobald Du in diese Zelle 'Tabelle3!B3' oder ähnliches eingibst, wird zwingend ein Indexfehler ausgelöst - natürlich immer vorausgesetzt, der Programmcode wird so beibehalten, wie Du ihn zuletzt gepostet hast.

    Anmerkung: Ich gab Dir bereits in meiner 1. Antwort diese Information!!
     
    Exl121150, 14. Mai 2010
    #10
  11. adpar Erfahrener User
    hay!
    Ich habe in der Tabelle2, Zelle N1 NUR den Namen der Tabelle zu stehen wo er hin springen soll. In diesem Fall

    Tabelle1

    Mehr steht da nicht drin und dennoch sagt er mir immer noch
    index außerhalb gültigen bereich.

    Ich weiß nicht mehr weiter.

    Vielleicht hilft das: ich arbeite mit excel 2000.
    Kann es sein dass diese alte Version irgendein Code noch nicht kennt?

    mfg
    adpar
     
    adpar, 14. Mai 2010
    #11
  12. Exl121150 Erfahrener User
    Hallo,

    und steht da hinter dem Wort 'Tabelle1' vielleicht noch ein (nicht sichtbares) Leerzeichen, sodass da in Wahrheit 'Tabelle1 ' dort steht?
     
    Exl121150, 14. Mai 2010
    #12
  13. adpar Erfahrener User

    Seite wechseln mit VBA

    nein!Nichts!
    Nur
    Tabelle1

    Kein Leerzeichen oder irgendwas anderes.

    Kann man den Code denn irgendwie anders schreiben dass man den Ort wo er hin springen soll direkt in das Makro einfügen kann? Sprich also nicht den Umweg über eine Zelle gehen?

    mfg
    adpar
     
    adpar, 14. Mai 2010
    #13
  14. Exl121150 Erfahrener User
    Hallo,

    ein Index-Fehler in einer Auflistung weist normalerweise darauf hin, dass der verwendete Schlüsselbegriff für einen Listeneintrag (Nummer bzw. Name) in dieser Liste nicht existiert.
    Die Auflistung ist in diesem Fall die Liste der Arbeitsblattobjekte und ein einzelnes Arbeitsblattobjekt kann man mit seiner Nummer oder mit seinem Namen (=Bezeichnung im Tabulator des Arbeitsblattes) identifizieren.
    Da dieser simple Mechanismus bei Dir fehlschlägt, kann ich Dir nicht mehr weiterhelfen - ich weiß nicht, warum der fehlschlagen sollte.
    Du brauchst dazu nur folgende Codepassage
    Code:
    Worksheets("Tabelle2").Range("N1").Value
    ersetzen durch den Namen des Ziel-Arbeitsblattes, also zB. durch 'Tabelle1', sodass der gesamte Code so aussieht:
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
      If [A3] = [M2] Then 
        Worksheets("Tabelle1").Activate 
        ActiveSheet.Range("B3").Select 
      End If 
    End Sub
    In diesem Fall springt die aktive Zelle nach Tabelle1!B3, sobald die Bedingung [A3] = [M2] erfüllt ist und ein SelectionChange-Ereignis (=Änderung der Auswahl) im aktuellen Arbeitsblatt (=im Arb.Blatt, in dessen Codemodul dieses Makro gespeichert wurde) stattfindet.

    Anmerkung: Da diese Ereignisbehandlungsroutine für ein Arbeitsblattereignis ("Worksheet_...") geschrieben wurde, nehme ich an, dass Du sie in das Klassencodemodul des korrekten Arbeitsblattes gespeichert hast.
     
    Exl121150, 15. Mai 2010
    #14
  15. adpar Erfahrener User
    hay!
    Danke für deine Hilfe.
    Leider funktioniert die direkte Schreibweise auch nicht.
    Da sagt er mir das gleiche.
    Index außerhalb gültigen Bereichs

    Ich hab das mal mit einem anderen Tabellenblatt versucht (Tabelle10) aber da ist es das Gleiche.

    Den Code hab ich bei Tabelle2, also beim Inhaltsverzeichnis rein geschrieben.

    mfg
    adpar


    P.s.:ich hab den Code nun mal mit einer leeren Arbeitsmappe versucht und dort funktioniert er einwandfrei.
    Es muss irgendwas in der Arbeitsmappe sein das er nicht haben will.
    Ich werde mal weiter experimentieren. Vielleicht liegt es ja an der Dropdown-Liste.
     
    adpar, 15. Mai 2010
    #15
Thema:

Seite wechseln mit VBA

Die Seite wird geladen...
  1. Seite wechseln mit VBA - Similar Threads - wechseln VBA

  2. VBA-Code Arbeitsblatt wechseln

    in Microsoft Excel Hilfe
    VBA-Code Arbeitsblatt wechseln: Hallo zusammen, ich habe mal wieder eine Frage. Aktuell beschäftige ich mich mit VBA-Codes. Beim öffnen meiner Arbeitsmappe erscheint folgender Hinweis: Private Sub Workbook_Open() 'Titel Hinweis...
  3. Excel VBA zwischen geöffneten Dateien wechseln und schließen.

    in Microsoft Excel Hilfe
    Excel VBA zwischen geöffneten Dateien wechseln und schließen.: Hi zusammen, Meine Arbeitsmappe öffnet via VBA die neueste Datei(auch eine Arbeitsmappe) in einem bestimmten Pfad und öffnet diese. Danach werden Daten hieraus kopiert und in die ursprüngliche...
  4. Per VBA Datei wechseln?

    in Microsoft Excel Hilfe
    Per VBA Datei wechseln?: Hallo, ich möchte mit einem Makro von einer Exceldatei X zur anderen geöffneten Exceldatei geöffneten wechseln um dort Daten in die Exceldatei X zu übertragen. Das Problem ist nur, dass die andere...
  5. per VBA von Berichtsansicht in die Seitenansicht wechseln

    in Microsoft Access Hilfe
    per VBA von Berichtsansicht in die Seitenansicht wechseln: Hallo, ich steh´ mal wieder voll auf dem Schlauch *frown.gif* Wie kann man einen in der Berichtsansicht geöffneten Bericht in die Seitenansicht wechseln (per VBA)? Viele Grüße Mrs. Rooster 318288
  6. Drucker via VBA in Access 2000 und Access 2003 wechseln

    in Microsoft Access Hilfe
    Drucker via VBA in Access 2000 und Access 2003 wechseln: Hallo, ich stehe derzeit vor dem Problem, dass ich ein Programm in Access 2000 habe, indem ich den Drucker für einen Berichtsausdruck ändern müsste. Nachdem es das Printer Objekt in Access 2000...
  7. Bild und Text auf Button per VBA wechseln

    in Microsoft Access Hilfe
    Bild und Text auf Button per VBA wechseln: Hallo Leute, kann mir einer verraten, wie ich bei einem Button per VBA festlege ob das Bild oder der Text angezeigt werden? Wahrscheinlich muss ich das Bild dann erst zur Laufzeit an den Button...
  8. VBA Matrix mit Button click wechseln

    in Microsoft Excel Hilfe
    VBA Matrix mit Button click wechseln: Hey, ich habe in Tabellenblatt1 4 Command Buttons angelegt. In Tabellenblatt 2 - 5 befinden sich jeweils unterschiedliche Matrizen. Mit click auf den jeweiligen Button soll in Tabellenblatt1...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden