Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Protokoll mit VBA erstellen

Betrifft: Protokoll mit VBA erstellen von: HendrikB.
Geschrieben am: 27.06.2013 16:43:38

Hallo Community,

da das bei meiner ersten Frage so gut geklappt hat, versuche ich nun nochmals mein Glück :-).

benötige Hilfe bei folgendem Problem:

Ich habe zwei Tabellenblätter (1:Input 2:Tabellenblatt2).
Nun möchte ich eine Art von Protokoll erstellen, welches mir die Werte aus "Input"(Tabellenblatt1) in Tabellenblatt2 kopiert.

Wenn ich aber nun die Werte in der Tabelle "Input" ändere, sollen die Werte die ich davor eingegeben habe in Tabellenblatt2 stehen bleiben und die neuen Werte darunter kopiert werden.

Ist das möglich? Und wenn ja - WIE?

Vielen Dank vorab!

Grüße

Hendrik

  

Betrifft: AW: Protokoll mit VBA erstellen von: Hajo_Zi
Geschrieben am: 27.06.2013 16:49:31

Hallo Hendrik,

mal ein Code für alle Tabellen.

Option Explicit
Dim LoLetzte As Long

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    With Worksheets("Tabelle3")
        LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
        .Cells(LoLetzte, 1) = Target.Address
        .Cells(LoLetzte, 2) = Target
        .Cells(LoLetzte, 3) = Sh.Name
        .Cells(LoLetzte, 4) = Environ("Username")
    End With
    Application.EnableEvents = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ' Sicherungen Protokollieren
    With Worksheets("Tabelle3")
        LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
        .Cells(LoLetzte, 1) = Now
        .Cells(LoLetzte, 2) = Environ("Username")
    End With
End Sub

Private Sub Workbook_Open()
    ' die letzten 10 Veränderungen anzeigen
    Dim LoI As Long
    Dim LoJ As Long
    Dim StMeldung As String
    With Worksheets("Tabelle3")
        LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
        If LoLetzte > 10 Then LoJ = LoLetzte - 11
        For LoI = LoJ + 1 To LoLetzte
            StMeldung = StMeldung & .Cells(LoI, 1).Text & " " & .Cells(LoI, 2) & Chr(13)
        Next LoI
        MsgBox StMeldung
    End With
End Sub
' https://www.herber.de/ _
forum/archiv/1256to1260/t1258105.htm


Protokolltabelle ist Tabelle3

GrußformelHomepage


  

Betrifft: AW: Protokoll mit VBA erstellen von: HendrikB.
Geschrieben am: 27.06.2013 17:39:56

Hallo Hajo,

vielen Dank für deine schnelle Antwort.

Ich habe den Code jetzt in Tabellenblatt "Input" kopiert. Wenn ich nun einen Wert in "Input" ändere erscheint diese Fehlermeldung.

Leider versteh ich nichts von VBA und muss daher ganz blöd fragen: Was nun? :-)





  

Betrifft: AW: Protokoll mit VBA erstellen von: Hajo_Zi
Geschrieben am: 27.06.2013 17:42:04

der Code gehört unter DieseArbeitsmappe, da er für alle Tabellen gilt.
Option Explicit geöhrt in die erste Zeile.

Gruß Hajo


  

Betrifft: AW: Protokoll mit VBA erstellen von: HendrikB.
Geschrieben am: 27.06.2013 17:48:42

Vielen, vielen Dank!

Funktioniert einwandfrei! :-)

Grüße

Hendrik


 

Beiträge aus den Excel-Beispielen zum Thema "Protokoll mit VBA erstellen"