Überprüfung/Kontrolle für einen Neuling
23.02.2018 09:23:12
Klaus
Vorab möchte ich mal ein riesen Lob an alle hier aussprechen. Ihr macht wirklich eine super Arbeit und helft jedem, der sich(noch) nicht so auskennt wie ihr.
Ich habe vor etwa einem Monat angefangen, ein wenig mit Excel zu probieren. Erst mit Formeln, Formatierungen usw. und dann mit Makros/VBA.
Ich habe hier im Forum oft nach Tips gesucht, um meine Vorstellungen umzusetzen. Immer fand ich einen Code oder ein Schnipzel, mit dem ich arbeiten konnte.
Jetzt habe ich mein Projekt ziemlich gut hinbekommen, wie ich finde und es geht an die Feinheiten. Es wäre super, wenn sich jemand von euch die Zeit nehmen würde, un sich meine Makros mal anschauet. Vlt. kann man ja noch etwas ändern oder verbessern. Derzeit ist die Originaldatei etwa 600Kb groß und wird anscheinend durch einge Makros beim Start und Beenden stark ausgebremst. Es dauert ziemlich lange, bis die Excel geöffnet/geschlossen ist.
Aber gut, ich fang mal mit meinen Makros an:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets.Count
Sheets("Info").Select
If Environ("username") = "Büro1" Or Environ("username") = "Büro2" Then
Worksheets("Überblick").Visible = xlSheetVisible
Sheets(i).Unprotect "1234"
End If
Next
Application.ScreenUpdating = True
End Sub
Anforderung bei Workbook_Open():
Die Datei wird nur von mir und meinem Kollegen bearbeitet aber von mehreren Mitarbeitern genutzt. Natürlich sollen nur ich und mein Kollege (Büro1, Büro2) die Tabellen ändern können. Deshalb die Abfrage des Users. Bei allen anderen Mitarbeitern wird bei Workbook_BeforClose (siehe weiter unten) ein Blattschutz aktiviert und das Blatt "Überblick" ausgeblendet.
Da ich fast täglich mit der Tabelle arbeite nervt es ziemlich, dass der Start/das Beenden so lange dauern. Die Mitarbeiter schauen eher selten (1-2x pro Woche) in die Tabelle.
Ich habe schon überlegt, mit einem "If Not" bei der Userabfrage zu arbeiten, bekomme es aber nicht hin...
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteZeile As Long
If Target.Count > 1 Then Exit Sub
If Sh.Name = "Überblick" Then Exit Sub
If Intersect(Target, Sh.Range("A1:T41")) Is Nothing Then Exit Sub
With Sheets("Überblick")
ErsteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(1) = Sh.Name
.Cells(2) = Target.Address(0, 0)
.Cells(7) = Target.Value
.Cells(13) = Date
.Cells(19) = Time
End With
End Sub
Mit diesem Makro möchte ich eigentlich nur ein Feedback haben, wann, wo, was geändert wurde. Mich stört hier allerdings, dass ich die Ausgabe zwar nach links und rechts verschieben kann (.Cells(1), .Cells(2), .Cells(7), ...) aber nicht nach unten. Ich habe schon versucht, an dem .Row etas zu ändern. Erfolglos...
Derzeit schreibt das Makro die Ausgabe ja in das Blatt "Überblick". Da ich aber möchte, dass die Mitarbeiter eine etwaige Änderung im 1. Tabellenblatt sehen wäre es super, wenn die Ausgabe auch dort erfolgt. Im 1. Tabellenblatt soll die Ausgabe aber nicht in Zeile 1 sondern in Zeile 25 stehen. (das bekomme ich aber einfach nicht hin -.-)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
If Environ("username") = "Büro1" Or Environ("username") = "Büro2" Then
With Application
.EnableEvents = False
.DisplayAlerts = False
ThisWorkbook.SaveCopyAs "C:\" & "Jsp-Log Backup Test" & ".xlsm"
.DisplayAlerts = True
.EnableEvents = True
End With
End If
Dim i As Long
For i = 1 To Sheets.Count
Sheets(i).Protect "1234"
Next
Worksheets("Überblick").Visible = xlSheetVeryHidden
If Not Saved Then Save
Application.ScreenUpdating = True
End Sub
Und zum Schluss mein Workbook_BeforeClose.
Hier funktioniert soweit alles. Wenn im Workbook_Open jedoch die Userabfrage geändert wird muss hier sicherlich auch etwas geändert werden. Dann könnte ja z.B. das "Protect" und das "Visible" wegfallen bzw deaktiviert werden oder?
Ich habe noch ein Modul. Hier sind aber nur die Funtionen der Buttons hinterlegt. Nichts spannendes also.
Zu erwähnen ist vlt noch, dass es sich um einen Jahresschichtplan für die Abteilung Logistik handelt. 14 Mitarbeiter, keine große Sache. Ich hoffe, das wenigstens die Formeln stimmen, die ich eingetragen habe. Hierbei bin ich aber ersteinmal zufrieden mit dem, wie es ist...
(Ich versuche irgendwie eine abgespeckte Arbeitsmappe hier hochzuladen, damit ihr euch diese vlt. mal anschauen könnt. Leider gehen hier ja nur 300Kb)
Vielen Dank im Vorraus und Sorry, wenn der Beitrag "etwas" länger ist ;-)
https://www.herber.de/bbs/user/120018.xlsm
Anzeige