Clever-Excel-Forum

Normale Version: Track Changes mittels VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Den Code musst Du im VBA-Editor in die entsprechenden Tabellen kopieren.
[
Bild bitte so als Datei hochladen: Klick mich!
]
Moin,

@Bast4i 

bei mir kommt der Fehler "Fehler beim Kompilieren Sub oder Function nicht definiert"
Hallo,

einmal heißt es Blattname das andere mal Blatnamme
Moin,

upps, das habe ich jetzt geändert, aber spuckt mir noch immer das selbe aus und markiert Private Sub Worksheet_Change(ByVal Target As Range) in gelb.

MfG
XenOn655
Hallo,

sind die Variablen Spalte_AENDERUNG und Spalte.... deklariert? Und wo? Was ist Tabellenendensuchen?
(09.04.2019, 12:29)Steffl schrieb: [ -> ]Hallo,

sind die Variablen Spalte_AENDERUNG und Spalte.... deklariert? Und wo? Was ist Tabellenendensuchen?

Ich habe das was Basti4 einfach in den Editor abgetippt und mehr habe ich gemacht. Wie gesagt meine Sklills in VBA gehen gegen 0

MfG
XenOn655
10Hallo,

Du hast nur einen Teil von Sebastian geposteten Code in Verwendung. Schaue dir nochmals genau seinen Beitrag Nr. 10 an.
(09.04.2019, 13:06)Steffl schrieb: [ -> ]ich habe mal einen Code von dir im Forum gefunden 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
' MitDkBlattAusblenden
    Dim raBereich As Range
        Set raBereich = Sheets("Data").Range("J1:J20")
        
            If Intersect(Target, raBereich) Is Nothing Then Exit Sub
                If Sheets("Berechnungen").Visible = False Then
                        Sheets("Berechnungen").Visible = True
                    Else: Sheets("Berechnungen").Visible = False
                End If

Das in Fett gedruckt habt ich schon an meinen Code angepasst aber trotzdem markiert er das kurisv fett bei mir. Und gibt den Fehler im siehe Bild aus.

MfG
XenOn655
(09.04.2019, 11:51)XenOn655 schrieb: [ -> ]Moin,

@Bast4i 

bei mir kommt der Fehler "Fehler beim Kompilieren Sub oder Function nicht definiert"

Du hast den Code für die Funktion TabellenendeSuchen vergessen zu kopieren!
Code:
Function TabellenendeSuchen(Arbeitsblatt As String, Spalte As Integer) As Long

TabellenendeSuchen = ActiveWorkbook.Worksheets(Arbeitsblatt).Cells(Rows.Count, Spalte).End(xlUp).Row

End Function
Füg das noch ganz unten ein!

Gruß
Sebastian
Moin,

Mir ist gerade aufgefallen das er den Blattnamen ausgibt. Was muss ich ändern damit er immer den kompletten Bereich anguckt und dann wenn da was geändert worden ist auch den ganzen Bereich abspeichert (siehe Bild)
Code:
Option Explicit
Const SPALTE_AENDERUNG = 8 'Nummer der Spalte auf deren Änderung reagiert wird
Const SPALTE_DATUM = 8 'Nummer der Spalte die das zu übertragende Datum enthält

Const LOG_BLATT = "Data" 'Name des Blattes, das das Log enthält
'#

Private Sub Worksheet_Change(ByVal Target As Range) 'Event bei Ändern eines Zelleninhalts

Dim Datum As Long
Dim LetzteZeile As Long
Dim Blattname As String

If Target.Column = SPALTE_AENDERUNG Then
  Datum = Cells(Target.Row, SPALTE_DATUM)
  Blattname = ActiveSheet.Name
 
  LetzteZeile = TabellenendeSuchen(LOG_BLATT, 1)
  ActiveWorkbook.Worksheets(LOG_BLATT).Cells(LetzteZeile + 1, 1) = Blattname
  ActiveWorkbook.Worksheets(LOG_BLATT).Cells(LetzteZeile + 1, 2) = Datum
  ActiveWorkbook.Worksheets(LOG_BLATT).Cells(LetzteZeile + 1, 3) = Environ("UserName") 'Application.UserName
  ActiveWorkbook.Worksheets(LOG_BLATT).Cells(LetzteZeile + 1, 4) = Now
     
  ActiveWorkbook.Worksheets(LOG_BLATT).Columns(2).NumberFormat = "dd/mm/yyyy"
  ActiveWorkbook.Worksheets(LOG_BLATT).Columns(5).NumberFormat = "dd/mm/yyyy hh:mm"
End If

End Sub
Function TabellenendeSuchen(Arbeitsblatt As String, Spalte As Integer) As Long

TabellenendeSuchen = ActiveWorkbook.Worksheets(Arbeitsblatt).Cells(Rows.Count, Spalte).End(xlUp).Row

End Function
Seiten: 1 2 3 4 5