Private Sub Workbook_SheetChange -> Auslesen der Zellenbezeichung

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaelKreuz139F.

    Private Sub Workbook_SheetChange -> Auslesen der Zellenbezeichung

    Hallo zusammen,

    mit SheetChange fange ich Änderungen der einzelnen Zellen in einem bestimmten Arbeitsblatt ab.
    Das funktioniert auch super.
    Ich würde gerne als zusätzliche Spalte die Zellenbezeichnung mit abfragen. Ich habe auf dem Arbeitsblatt diverse Zellen mit Namen difiniert.
    Kann mir einer helfen, wie ich mit "gleichem" Quellcode wie unten die Bezeichnung der Zelle abfragen kann?



    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = ActiveSheet.Name & " - " & Target.Address(0, 0)
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = oldValue
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value = Target.Value



    Vielen Dank im Voraus.

    VG
    Guten Morgen, sorry für die späte Rückmeldung. Ich habe auch etwas gefunden:

    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 5).Value = ActiveSheet.Names(2).Name
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 6).Value = ActiveSheet.Names(2).Comment

    Der Zellname und das dazugehörige Kommentar wird wiedergegeben.
    Habe das mit einem Testfeld gemacht. Nun habe ich eine Änderung an einem anderen Feld getätigt. Nur leider werden die Daten immer noch vom Vorigen Feld wiedergegeben (Namme, Kommentar)
    ​Nur leider werden die Daten immer noch vom vorigen Feld wiedergegeben (Name, Kommentar)


    Hallo,
    das sieht nach einem klassischen Konflikt zwischen Excel und dem Programmierer aus. Excel meint du beziehst dich auf den Zellbereich x, der Programmierer meint er bezieht sich auf den Zellbereich y, wobei x <> y. Wenn mir sowas passiert weiß ich, dass Excel Recht hat. Der Fehler lässt sich generell vermeiden, indem man weniger faul programmiert und zunächst einen Zellbereich definiert und erst anschließend etwas mit diesem Bereich veranstaltet. Ein Beispiel :

    VB.NET-Quellcode

    1. myRange = Sheets("LogDetails").Range("A1:C3").Select 'für einen Zellbereich
    2. myRange = Sheets("LogDetails").Range("B2").Activate 'für eine einzelne Zelle
    3. myRange.Value = "Whatever"


    Dann verwendest du den Ausdruck

    VB.NET-Quellcode

    1. ActiveSheet.Names(2)

    Was soll dieser Ausdruck liefern ? Eine Spalte ? Eine Zeile ? Einen Zellbereich ? Etwas ganz anderes ? Bitte vergleiche deine Meinung mit dem Excel Objekt Modell docs.microsoft.com/de-de/office/vba/api/excel.names

    ActiveSheet.Names(2) soll das Zellkommentar darstellen. Das funktioniert auch.







    Nochmal vielen Dank für die Hilfe. Es ist alles FAST fertig.
    Eine Sache ist mir nun aufgefallen. Es gibt Probleme mit loggen von Zellen die über eine Datenüberprüfung laufen (Auswahl über Liste).
    Beispiel: abc;def;ghi oder 1;2;3;4 .
    Das loggen der Zellen wo die Auswahl 1;2;3;4 funktioniert super. Nur die mit Text nicht.
    Bei denen mit Text gibt es bei Änderungen kein old.value. Erst wenn die Auswahl in der Zelle mit Enter bestätige logt das Protokoll. Aber wer macht das schon?
    Und wenn ich dann wieder die Zelle Ändere zeigt das Logfile eine falschen Wert aus der List als old.value.

    Kann hier noch einer helfen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaelKreuz139F“ ()

    Schuss ins Blaue

    Hallo,
    Das hört sich nach einem Aktualisierungsproblem an. Du könntest auf Worksheet Ebene die Methoden Activate, Calculate bzw. Select ausprobieren.

    Sollte das nicht funktionieren, benötigen wir ein Beispiel Projekt (mit ein paar Dummy Daten), in dem der Fehler nachgestellt wird. Eventuell ein paar Screenshots als Erklärung wo und unter welchen Umständen das Problem auftritt.

    Viele Grüße,
    Zorroot

    es sind die Kommentare...

    Leider kann ich die Beispieldatei nicht hochladen. Deshalb das Coding,

    Mir ist nun aufgefallen , dass das Problem entsteht sobald die benamte Zelle ein Kommentar im Namenmanager bekommt. Also unabhängig von Zahl und Text,
    Im Logfile kann man sehen, dass der vorher Wert nicht stimmt...



    Dim oldValue As String
    Dim oldAddress As String





    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    Dim sSheetName As String
    sSheetName = "Data"
    If ActiveSheet.Name <> "LogDetails" Then



    Application.EnableEvents = False



    'ThisWorkbook.Sheets("LogDetails").Unprotect ""


    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = ActiveSheet.Name & " - " & Target.Address(0, 0)
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = oldValue
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value = Target.Value
    'Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 3).Value = Environ("username")
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 4).Value = Now
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 5).Value = ActiveSheet.Names(2).Name
    'Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 6).Value = ActiveSheet.Names(2).Comment
    Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 6).Value = Target.Name.Comment


    Sheets("LogDetails").Hyperlinks.Add Anchor:=Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 7), Address:="", SubAddress:="'" & sSheetName & "'!" & oldAddress, TextToDisplay:=oldAddress
    Sheets("LogDetails").Columns("A:Z").AutoFit

    Application.EnableEvents = True




    End If

    'ThisWorkbook.Sheets("LogDetails").Protect ""

    End Sub



    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    oldValue = Target.Value
    oldAddress = Target.Address


    End Sub



    Es muss irgendwie mit den Kommentaren zusammenhängen. Und wie gesagt, wenn ich nach nach Auswahl der Zahl ENTER drücke, funktioniert alles...
    Bilder
    • Unbenannt - Kopie.JPG

      48,55 kB, 1.046×240, 57 mal angesehen
    • Unbenannt2 - Kopie.JPG

      34,59 kB, 606×314, 68 mal angesehen