Thema Datum  Von Nutzer Rating
Antwort
25.02.2020 17:15:38 Sonny
NotSolved
25.02.2020 17:24:58 Werner
NotSolved
Rot Tabellenblätter nur für einen best. User einblenden (in besteh. Makro integrieren)
25.02.2020 17:28:27 Sonny
NotSolved
25.02.2020 23:48:01 Gast40295
NotSolved

Ansicht des Beitrags:
Von:
Sonny
Datum:
25.02.2020 17:28:27
Views:
716
Rating: Antwort:
  Ja
Thema:
Tabellenblätter nur für einen best. User einblenden (in besteh. Makro integrieren)

Das "ganze Teil" ist ein kleines Excel, wo im Prinzip ja alles viel klarer ersichtlich ist, als wenn ich es hier poste, oder? Aber ich kann es gerne probieren:

In "Diese Arbeitsmappe":

Option Explicit                                     ' Variablendefinition erforderlich
'**************************************************
'* H. Ziplies                                     *
'* 16.04.08                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/                          *
'**************************************************
 
Private Sub Workbook_Open()
    With Sheets("xyz")
        ' Ablaufdatum beim ersten Öffen eintragen
        If .Range("A1") = "" And Environ("Username") _
            <> "Hajo_Zi" Then .Range("A1") = Date + 30
        ' Ablauflaufdatum prüfen
        If .Range("A1") <> "" And Date > CDate(.Range("a1")) Then
            MsgBox "Ihre Testphase ist abgelaufen," _
                & vbCr & "bitte wenden Sie sich an Ihren Administrator.", _
                48, "Ablaufdatum"
            ThisWorkbook.Close False
        End If
        ' Tabellen einblenden
        blenden -1                                  ' Tabellen einblenden
        Worksheets("Tabelle1").Select               ' damit diese Tabelle beim Start angezeigt wird
        ' damit das einblenden der Register nicht als Veränderung
        ' der Datei angesehen wird Schalter Veränderung der
        ' Datei zurückstellen
        ThisWorkbook.Saved = True                   ' Datei sichern
    End With
End Sub
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.Saved Then Exit Sub
    If InSpeicher = 1 Then Exit Sub
    InSpeicher = 1
    If MsgBox("Wollen Sie die Veränderungen speichern?", vbYesNo + _
        vbQuestion, "Speichern ?") = vbYes Then
        blenden 2
    Else
        ThisWorkbook.Saved = True
    End If
End Sub
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        Dim StDateiname As String
        ' With da Zeile sonst zu lang
        With Application
            StDateiname = _
                .GetSaveAsFilename(fileFilter:="Excel-Arbeitsmappen (*.xls), *.xls")
        End With
        ' ein Dateinmae wurde eingegeben
        If UCase(StDateiname) <> "FALSCH" Then
            ' Reaktion auf Zellveränderung abschalten
            Application.EnableEvents = False
            ThisWorkbook.SaveAs Filename:=StDateiname
            ' Reaktion auf Zellveränderung einschalten
            Application.EnableEvents = True
        End If
        Cancel = True                               ' speichern unter Dialog abbrechen
    End If
    Application.ScreenUpdating = False              ' Bildschirmaktualisierung aus
    If StTabelle = "" Then
        StTabelle = ActiveSheet.Name
        ' ausblenden aller Register außer Sheets("Makros_deaktiviert")
        ' mit xlVeryHidden (2) dies hat den Vorteil, sie können nur per
        ' VBA eingeblendet werden.
        blenden 2                                   ' Tabellen ausblenden
        Cancel = True
    End If
    Application.ScreenUpdating = True               ' Bildschirmaktualisierung ein
    ' damit das einblenden der Register nicht als Veränderung
    ' der Datei angesehen wird Schalter Veränderung der Datei zurückstellen
    ThisWorkbook.Saved = True                       ' Datei sichern
End Sub
 
Und in Module "mdl_Makro_aktiv"
 
Option Explicit                                     ' Variablendefinition erforderlich
' das Projekt muss nicht als Private definiert werden
' das Makro kann nur mit Parameter aufgerufen werden
'**************************************************
'* H. Ziplies                                     *
'* 04.02.07                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/                          *
'**************************************************
Public StTabelle As String                          ' ausgewählte Tabelle
Public InSpeicher As Integer                        ' Datei wird geschlossen
Dim InI As Integer                                  ' Zählvariable für Register
 
Sub blenden(InZustand As Integer)
    'ActiveWorkbook.Unprotect ("Passwort")
    ' alle Tabellen einblenden vom letzten bis zum ersten
    ' bis auf Hinweistabelle
    If InZustand = 2 Then _
        Sheets("Makros_deaktiviert").Visible = -1
    For InI = Sheets.Count To 1 Step -1
        If Sheets(InI).Name <> "Makros_deaktiviert" _
            And Sheets(InI).Name <> "xyz" Then _
                Sheets(InI).Visible = InZustand
    Next InI
    ' Tabelle mit Hinweis ein- bzw. ausblenden
    ' Tabelle ausblenden
    If InZustand <> 2 Then Sheets("Makros_deaktiviert").Visible = 2
    If StTabelle <> "" Then
        If Sheets(StTabelle).Visible = -1 Then  ' Tabelle ist sichtbar
            ' vor speichern gewählte Tabelle wieder aktivieren
            Sheets(StTabelle).Select
            StTabelle = ""                          ' Variable zurücksetzen
        End If
    End If
    ' Tabellen wurden ausgelendet, Datei sichern
    If InZustand = 2 Then
        Application.EnableEvents = False
        'ActiveWorkbook.Protect ("Passwort")
        ThisWorkbook.Save
        Application.EnableEvents = True
        If InSpeicher <> 1 Then blenden -1
    End If
End Sub
 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
25.02.2020 17:15:38 Sonny
NotSolved
25.02.2020 17:24:58 Werner
NotSolved
Rot Tabellenblätter nur für einen best. User einblenden (in besteh. Makro integrieren)
25.02.2020 17:28:27 Sonny
NotSolved
25.02.2020 23:48:01 Gast40295
NotSolved