Entire.Row Bezug auf Name
04.11.2022 13:41:01
Stefan
gibt es eine Möglichkeit sich hier (".Cells(8) = Target.EntireRow.Cells(69)") auf einen definierten Namen zu beziehen? Statt der Angabe "69"?
Mein Problem ist, dass evtl. eine Spalte eingefügt wird und dann die Protokollierung nicht mehr funktioniert.
Ich habe schon verschiedene Schreibweisen versucht - bekomme es aber nicht hin.
Vorab vielen Dank
Gruß
Stefan
Hier der ganze Code:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
Dim AlterWert As Variant, NeuerWert As Variant
Dim rngNeuSel As Range
If Sh.Name = "Protokoll" Then Exit Sub
If Intersect(Target, Sh.Range("A1:CC1000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
NeuerWert = Target.Value
Set rngNeuSel = Selection
Application.Undo
AlterWert = Target.Value
Target.Value = NeuerWert
On Error Resume Next
rngNeuSel.Activate
On Error GoTo 0
With Sheets("Protokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
With .Rows(ErsteFreieZeile)
.Cells(1) = Sh.Name
.Cells(2) = Target.Address(0, 0)
.Cells(3) = Target.Range("A1").Value
.Cells(5) = Date
.Cells(6) = Time
.Cells(7) = Environ("username")
.Cells(4) = AlterWert
.Cells(8) = Target.EntireRow.Cells(69)
End With
End With
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
AlterWert = Target
End Sub