none
Excel 2003 - freigegebene Arbeitsmappe - Anzeige Tabellenblatt RRS feed

  • Frage

  • Hallo

    Habe folgendes Problem: Excel Arbeitsmappe mit je einem Tabellenblatt für jede Kalenderwoche (also 52 Blätter) – Arbeitsmappe ist freigegeben (ohne Einschränkungen)

    Wenn jetzt ein Benutzer diese Arbeitmappe öffnet wird ein bestimmtes Tabellenblatt angezeigt z. B. KW12 (ist bei jedem Benutzer ein anderes Blatt), wechselt er nun auf die KW19, ändert hier einen Wert und speichert er die Datei, wird beim nächsten öffnen wieder die KW12 angezeigt. Ist so sehr lästig, bei jedem öffnen wieder das letzte Blatt auszuwählen.

    Bei einer nicht freigegebenen Arbeitsmappe wird die Information welches Tabellenblatt zuletzt geändert wurde bzw. welches Tabellenblatt das aktuelle war mit abgespeichert.

    Hat jemand eine Idee wie ich das beheben kann?

    Gruß

    Mittwoch, 12. Mai 2010 12:55

Antworten

  • [...] Ist so sehr lästig, bei jedem öffnen wieder das letzte Blatt auszuwählen.

    Hat jemand eine Idee wie ich das beheben kann?
    Hallo Duesselmoewe.

    Du könntest ein (später ausgeblendetes) Blatt anlegen, in dem für jeden Benutzer festgehalten wird, welche Tabelle er/sie zuletzt angezeigt hatte. Beim Speichern der Mappe wird der Name des Benutzers und seine aktive Tabelle in dem versteckten Blatt gespeichert. Beim Öffnen der Mappe wird dort nach dem Namen des Benutzers gesucht und dessen Tabelle wieder aktiviert.

    Das funktioniert mit ein paar Zeilen VBA-Code (siehe unten). Das Ausführen von Makros muss auf den Rechnern erlaubt sein. Um den VBA-Code in der Mappe speichern zu können, musst Du die Freigabe vorübergehend aufheben. Dazu müssen alle Benutzer die Mappe schließen.

    Mit <ALT> <F11> startest Du den VBA-Editor. Dort links oben im Bereich "Projekt – VBA-Prokjekt" einen Doppelklick auf "DieseArbeitsmappe". Anschließend unten stehenden Code in den Bereich rechts rein kopieren. Speichern und wieder freigeben. Den Namen der Tabelle, in der die Informationen gespeichert werden - im Beispiel: "aktive Tabellen der Benutzer" - müsstest Du bitte im Code anpassen. Siehe dazu die Anweisung Const TABELLE. Das Blatt mit den Information kannst Du später ausblenden.

    Peter

    Option Explicit

    Const TABELLE = "aktive Tabellen der Benutzer" 'Hier den Namen der Tabelle ändern

    Private Sub Workbook_Open()
       Dim f As Range

       With Sheets(TABELLE)
          Set f = .Range(.[A1],.[A65000].End(xlUp)).Find(Environ("USERNAME"),,,xlWhole)
          If Not f Is Nothing Then
             On Error Resume Next
             Sheets(f.Offset(, 1).Value).Select
          End If
       End With
    End Sub

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean , Cancel As Boolean )
       Dim f As Range

       With Sheets(TABELLE)
          Set f = .Range(.[A1],.[A65000].End(xlUp)).Find(Environ("USERNAME"),,,xlWhole)
          If f Is Nothing Then Set f = .[A65000].End(xlUp).Offset(1)
          f = Environ("username")
          f.Offset(, 1).Value = ActiveSheet.Name
       End With
    End Sub

    • Als Antwort vorgeschlagen Harald Konnerth Donnerstag, 27. Mai 2010 14:37
    • Als Antwort markiert Vlad Bojan Donnerstag, 3. Juni 2010 13:36
    Mittwoch, 19. Mai 2010 19:54