Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Protokoll mit VBA erstellen

Forumthread: Protokoll mit VBA erstellen

Protokoll mit VBA erstellen
27.06.2013 16:43:38
HendrikB.
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

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Protokoll mit VBA erstellen
27.06.2013 16:49:31
Hajo_Zi
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

Anzeige
AW: Protokoll mit VBA erstellen
27.06.2013 17:39:56
HendrikB.
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? :-)
Userbild

Anzeige
AW: Protokoll mit VBA erstellen
27.06.2013 17:42:04
Hajo_Zi
der Code gehört unter DieseArbeitsmappe, da er für alle Tabellen gilt.
Option Explicit geöhrt in die erste Zeile.
Gruß Hajo

AW: Protokoll mit VBA erstellen
27.06.2013 17:48:42
HendrikB.
Vielen, vielen Dank!
Funktioniert einwandfrei! :-)
Grüße
Hendrik
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Protokoll mit VBA erstellen in Excel


Schritt-für-Schritt-Anleitung

Um ein Protokoll mit VBA in Excel zu erstellen, gehe wie folgt vor:

  1. Öffne deine Excel-Datei mit zwei Arbeitsblättern: "Input" und "Tabelle3" (oder gib deinem Protokollblatt einen anderen Namen).

  2. Öffne den VBA-Editor: Drücke ALT + F11.

  3. Füge den folgenden Code in das Modul "DieseArbeitsmappe" ein:

    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)
       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()
       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
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Teste das Skript, indem du Werte im "Input"-Tabellenblatt änderst. Die Änderungen sollten automatisch in "Tabelle3" protokolliert werden.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Ändern der Werte: Stelle sicher, dass der Code im Modul "DieseArbeitsmappe" eingefügt wurde und nicht in einem einzelnen Tabellenblatt.

  • Protokoll wird nicht aktualisiert: Überprüfe, ob die Excel-Datei gespeichert ist und die Makros aktiviert sind.

  • Daten erscheinen nicht in der richtigen Reihenfolge: Achte darauf, dass du die richtigen Zellen im Code referenzierst und dass die Zielzelle in "Tabelle3" korrekt ist.


Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch ein besprechungsprotokoll Excel erstellen, indem du einfach eine Tabelle in Excel anlegst und manuell die Änderungen protokollierst. Du kannst auch Formeln verwenden, um vergangene Werte zu speichern, jedoch ist dies nicht so automatisiert wie mit VBA.


Praktische Beispiele

  1. Gesprächsprotokoll erstellen: Verwende den obigen VBA-Code, um ein Protokoll von Gesprächen zu führen, indem du die Notizen in das "Input"-Tabellenblatt eingibst.

  2. Messprotokoll erstellen: Nutze das gleiche Verfahren, um Messwerte zu dokumentieren und in "Tabelle3" zu speichern.

  3. Netzwerkprotokoll erstellen: Halte Netzwerkänderungen fest, indem du einfach die entsprechenden Daten in "Input" eingibst.


Tipps für Profis

  • Automatisierung: Du kannst den VBA-Code erweitern, um spezifische Daten wie Datum, Uhrzeit oder Benutzername automatisch zu speichern.

  • Eingabeprüfungen: Füge Eingabekontrollen hinzu, um sicherzustellen, dass die Daten im richtigen Format eingegeben werden.

  • Berichte erstellen: Verwende Pivot-Tabellen oder Diagramme, um aus den protokollierten Daten umfassende Berichte zu erstellen.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um zusätzliche Informationen zu protokollieren? Du kannst zusätzliche .Cells(LoLetzte, n)-Befehle im VBA-Code hinzufügen, um mehr Informationen zu speichern.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen? Der Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und höher) funktionieren. Achte darauf, dass du die Makros aktivierst.

3. Was tun, wenn das Protokoll nicht aktualisiert wird? Überprüfe, ob die Makros aktiviert sind und dass keine Fehler im Code vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige