Anzeige
Archiv - Navigation
1588to1592
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

Tabellenblatwechsel

Tabellenblatwechsel
06.11.2017 16:11:17
Lisa
Hallo und guten Tag.
Ich suche eine Lösung für folgendes Problem.
Meine Arbeitsmappe hat jede Menge Arbeitsblätter.
Ich möchte hier gern in meinem Tabellenblatt 1 eine Chronologie darüber haben wer wann welches Tabellenblatt ausgewählt hat.
Hat hierzu jemand eine Idee?
Liebe Grüße Lisa

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatwechsel
06.11.2017 16:19:21
ChrisL
Hi Lisa
Die "Rechtmässigkeit" dieser Überwachung musst du selber beurteilen.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim lZ As Long
With Worksheets("Tabelle1")
lZ = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lZ, 1) = Date
.Cells(lZ, 2) = Sh.Name
End With
End Sub

Alt+F11, links Doppelklick auf "DieseArbeitsmappe", Code einfügen.
cu
Chris
AW: Tabellenblatwechsel
07.11.2017 09:29:07
Lisa
Guten Morgen Chris.
Erst einmal vielen Dank für die schnelle Hilfe. Es klappt perfekt und wie gewünscht.
Ja es ist eine Art der Überwachung, die Bordmittel von Excel sehen es aber bei freigegebenen Excel Mappen auch vor, jedenfalls kann man es so einstellen.
Für meinen Bedarf ist es aber abgesprochen und vor Änderung wird man auch darauf hingewiesen.
Zudem ist es für diesen Bedarf äußerst wichtig die Änderungen nachzuhalten.
Es zeichnet dich aber aus, daß du es nicht, ohne darauf zu verweisen, zur Verfügung stellst.
Vielen Dank und noch einen schönen Tag.
Liebe Grüße Lisa
Anzeige
AW: Tabellenblatwechsel
06.11.2017 16:19:24
Michael
Hallo!
Ein Beispiel: https://www.herber.de/bbs/user/117477.xlsm
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name  "Tabelle1" Then
With Me.Worksheets("Tabelle1")
.Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) = "Blatt: " & Sh.Name
.Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0) = "Durch: " & Environ("Username")
.Cells(.Rows.Count, "C").End(xlUp).Offset(1, 0) = "Am: " & Now
End With
End If
End Sub
Passt?
LG
Michael
AW: Tabellenblatwechsel
07.11.2017 09:31:12
Lisa
Guten Morgen Michael, auch dir vielen Dank für deine schnelle Hilfe.
Es klappt auch hiermit perfekt und wie gewünscht.
Vielen lieben Dank und noch einen schönen Tag.
Liebe Grüße Lisa
Anzeige
Gern, Danke für die Rückmeldung, owT
07.11.2017 09:35:59
Michael
AW: Tabellenblatwechsel
07.11.2017 09:40:53
Lisa
Hallo noch einmal.
Was muss ich an dieser Stelle tun, um einen Überlauf zu vermeiden?
Also wenn irgendwann einmal die letzte Zeile beschrieben wurde. Gibt es da eine Möglichkeit die nächsten Spalten zu nutzen oder von oben wieder anzufangen?
Liebe Grüße Lisa
AW: Tabellenblatwechsel
07.11.2017 11:42:49
Michael
Hallo!
Gerade noch gesehen. Würde ich so machen, in Bezug auf meine Bsp-Datei oben:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim lC&, lR&
If Sh.Name  "Tabelle1" Then
With Me.Worksheets("Tabelle1")
lC = .Cells(1, .Columns.Count).End(xlToLeft).Column
lR = WorksheetFunction.CountA(.Range(.Cells(1, lC), .Cells(.Rows.Count, lC))) + 1
If lR > .Rows.Count Then
lC = lC + 3
.Cells(1, lC - 2) = "Blatt"
.Cells(1, lC - 1) = "User"
.Cells(1, lC) = "Zeit"
lR = .Cells(.Rows.Count, lC).End(xlUp).Row + 1
End If
.Cells(lR, lC - 2) = Sh.Name
.Cells(lR, lC - 1) = Environ("username")
.Cells(lR, lC) = Now
End With
End If
End Sub
Aber damit sammelst Du über die Zeit eine Menge Daten, und die Datei bläht sich auf - würde ich nicht empfehlen. Ich würde mir an Deiner Stelle überlegen, ob Du Dein "Blatt-Zugriffs-Logbuch" nicht auf eine fixe Anzahl-Einträge begrenzt (zB letzte 100); wenn dann 100 Log-Einträge vorhanden sind, wird "von oben" der älteste wieder überschrieben, alles andere ist eigentlich Unsinn/Overkill.
Falls Du zu dieser Variante Hilfe brauchst, gib Bescheid.
LG
Michael
Anzeige
AW: Tabellenblatwechsel
07.11.2017 11:59:14
Lisa
Hallo Michael, vielen Dank für deine Mühe.
Ich gebe dir in dem was du schreibst völlig recht.
Deine genannte Variante wäre da wirklich die bessere Lösung.
Wenn du die Einträge von statt 100 auf 1000 setzen und mir hierzu einen Code schreiben könntest, das wäre sehr schön.
Anbei aber noch eine andere Frage.
Kann man auch das alleinige aktivieren, also ohne Änderungen im Tabellenblatt protokollieren?
Frag lieber nicht was das soll :(
Liebe Grüße Lisa und vielen Dank
AW: Tabellenblatwechsel
07.11.2017 13:53:12
Michael
Hallo!
Nochmal eine Bsp-Datei: https://www.herber.de/bbs/user/117499.xlsm
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim rLog As Range
If Sh.Name  "Tabelle1" Then
With Me.Worksheets("Tabelle1")
Set rLog = .Range("A1002")
rLog = IIf(rLog > 1000, 2, rLog + 1)
.Cells(rLog, 1) = Sh.Name
.Cells(rLog, 2) = Environ("Username")
.Cells(rLog, 3) = Now
End With
End If
Set rLog = Nothing
End Sub
Kann man auch das alleinige aktivieren, also ohne Änderungen im Tabellenblatt protokollieren
Das macht mein Code schon die ganze Zeit ;-).
LG
Michael
Anzeige
AW: Tabellenblatwechsel
08.11.2017 14:50:47
Lisa
Hallo Michael, vielen Dank für deine Hilfe und entschuldige die doppelte Fragestellung.
Ich habe alles getestet und es läuft alles wie gewünscht.
Irgendwie stand ich mir selbst im Wege.
Liebe Grüße Lisa
Danke für die Rückmeldung, owT
08.11.2017 14:54:36
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige