Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Lösung gesucht ...

VBA Lösung gesucht ...
20.11.2021 15:30:44
Franzl
Hallo Excel-Spezialisten,
ich sitze hier an einem Problem und bin nicht so in VBA.
Ich habe ein Makro, dass sozusagen Daten aus einer Tabelle protokolliert. Das funktioniert auch super. Nur es werden immer von allen Tabellenblättern die eingegebenen Daten in dem Blatt "Protokoll" eingetragen. Ich bräuchte aber nur die Daten im Protokoll, die in dem Tabellenblatt "Kosten" eingetragen werden.
Das Makro, welches ich nutze lautet:
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
If Target.Count > 1 Then Exit Sub
If Sh.Name = "Protokoll" Then Exit Sub
If Intersect(Target, Sh.Range("B6:I99")) Is Nothing Then Exit Sub
With Sheets("Protokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(ErsteFreieZeile, 1) = Now
.Cells(ErsteFreieZeile, 2) = Date
.Cells(ErsteFreieZeile, 3) = Time
.Cells(ErsteFreieZeile, 4) = Sh.Name
.Cells(ErsteFreieZeile, 5) = Target.Address(0, 0)
.Cells(ErsteFreieZeile, 7) = Target.Value
.Cells(ErsteFreieZeile, 8) = Environ("Computername")
.Cells(ErsteFreieZeile, 9) = ThisWorkbook.FullName
End With
End Sub
Eine Beispieldatei habe ich hier angehängt https://www.herber.de/bbs/user/149264.xlsm
Ich weiß nicht, wo ich den Tabellennamen im Makro einfügen muss, damit "nur" das Tabellenblatt "Kosten" protokolliert wird.
Danke im voraus.
Franzl

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Lösung gesucht ...
20.11.2021 15:47:24
Hajo_Zi
If Sh.Name = "Kosten" Then
If Intersect(Target, Sh.Range("B6:I99")) Is Nothing Then Exit Sub
With Sheets("Protokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(ErsteFreieZeile, 1) = Now
.Cells(ErsteFreieZeile, 2) = Date
.Cells(ErsteFreieZeile, 3) = Time
.Cells(ErsteFreieZeile, 4) = Sh.Name
.Cells(ErsteFreieZeile, 5) = Target.Address(0, 0)
.Cells(ErsteFreieZeile, 7) = Target.Value
.Cells(ErsteFreieZeile, 8) = Environ("Computername")
.Cells(ErsteFreieZeile, 9) = ThisWorkbook.FullName
End With
End if
GrußformelHomepage
In diesem Forum bekomme nur selten eine Mailbenachrichtigung, weitere Antworten sind zufällig.
Anzeige
AW: VBA Lösung gesucht ...
20.11.2021 15:51:48
Nepumuk
Hallo Franzl,
folgendes Makro in das Modul der Tabelle "Kosten" (Rechtsklick auf den Tabellenreiter - Code anzeigen):

Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
Dim objRange As Range, objCell As Range
Set objRange = Intersect(Target, Range("B6:I99"))
If Not objRange Is Nothing Then
With Worksheets("Protokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each objCell In objRange
.Cells(ErsteFreieZeile, 1) = Now
.Cells(ErsteFreieZeile, 2) = Date
.Cells(ErsteFreieZeile, 3) = Time
.Cells(ErsteFreieZeile, 4) = Sh.Name
.Cells(ErsteFreieZeile, 5) = objCell.Address(0, 0)
.Cells(ErsteFreieZeile, 7) = objCell.Value
.Cells(ErsteFreieZeile, 8) = Environ("Computername")
.Cells(ErsteFreieZeile, 9) = ThisWorkbook.FullName
ErsteFreieZeile = ErsteFreieZeile + 1
Next
End With
Set objRange = Nothing
End If
End Sub
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige