01.06.2022, 17:59
Hallo zusammen,
unzwar wollte ich in meiner Exceldatei eine Änderungsverfolgung per VBA einbauen.
Ich habe paar Fehler eingebaut in der Codierung und wollte daher mal nachfragen, was genau ich hier falsch gemacht habe!
Ich bitte daher um eure Hilfe den Code packe ich euch rein.
Ich bedanke mich im Voraus und warte gespannt auf die Auflistung meiner Fehler!!
Grüße der blutige Anfänger!
unzwar wollte ich in meiner Exceldatei eine Änderungsverfolgung per VBA einbauen.
Ich habe paar Fehler eingebaut in der Codierung und wollte daher mal nachfragen, was genau ich hier falsch gemacht habe!
Ich bitte daher um eure Hilfe den Code packe ich euch rein.
Ich bedanke mich im Voraus und warte gespannt auf die Auflistung meiner Fehler!!
Grüße der blutige Anfänger!
Code:
Private Sub ThisWorkbook()
Dim wksTab As Worksheet
Dim IngZeileFrei As Long
MsgBox ("Alle Änderungen in der Mappe werden automatisch dokumentiert")
Application.EnableEvents = False
With Worksheet_Zugangsdokumentation
.Range("A" & IngZeileFrei).Value = Date
.Range("B" & IngZeileFrei).Value = Environ("username")
.Range("C" & IngZeileFrei).Value = Time
End With
Application.EnableEvents = True
Else
ThisWorkbook.Close savechanges:=False
End If
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim IngZeileFrei As Long
Dim rngZeile As Range
Select Case Sh.CodeName
Case "tbl_Start", "tbl_Rückverfolgung", "tbl_Auftragseinholung, "tbl_Berechnung+Speichern"
'bei diesen Tabelle keine Änderungen dokumentieren
Case Else
For Each rngZeile In Target
With tbl_Rückverfolgung
IngZeileFrei = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & IngZeileFrei).Value = Date
.Range("B" & IngZeileFrei).Value = Time
.Range("C" & IngZeileFrei).Value = Environ("username")
.Range("D" & IngZeileFrei).Value = Sh.Name
.Range("E" & IngZeileFrei).Value = rngZeile.Address
.Range("F" & IngZeileFrei).Value = "'" & rngZeile.Formula
End With
Next rngZeile
End Select
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim rngTreffer As Range
Dim wksTab As Worksheet
With tbl_Zugangsdokumentation
Set rngTreffer = .Range("B:B").Find(what:=Environ("username"), _
lookat:=xlWhole, searchdirection:=xlPrevious
If Not rngTreffer Is Nothing Then
.Cells(rngTreffer.Row, 5).Value = Time
End If
For Each wksTab In ThisWorkbook.Worksheets
Select Case wksTab.CodeName
Case "tbl_Auftragseinholung"
'keine Aktion, diese Tabelle soll immer sichtbar sein
Case Else
wksTab.Visible = xlSheetVeryHidden
End Select
Next wksTab
End With
ThisWorkbook.Save
End Sub