Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1168to1172
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

Gleiche Zelle in anderem Arbeitsblatt füllen

Gleiche Zelle in anderem Arbeitsblatt füllen
Evil-Steve
Hallo zusammen,
Es ist mal wieder soweit, ich komme bei meinem Problem leider nicht weiter und muss mich wieder mal ans allwissende Excel-Forum auf Herber wenden:
In einer Matrix (Arbeitsblatt “Eingabe“) sollen von verschiedenen Benutzern in freigegebenen Zellen (bspw. E7) Werte erfasst werden. Im Arbeitsblatt “Protokoll“ (hat genau denselben Aufbau wie “Eingabe“!) soll in derselben Zelle (“Protokoll/E7“) protokolliert werden, welcher Benutzer wann welche Zelle verändert hat. Dazu habe ich mir folgenden Code gebastelt:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Bereich As Range
Dim r
r = ActiveCell.Address
Set Bereich = Range("C5:E8") ' Bereich der Wirksamkeit
Application.EnableEvents = False
If Intersect(Target, Bereich) Is Nothing Then GoTo Ende ' Abbruch, wenn Aktion nicht im  _
Zielbereich
Worksheets("Protokoll").Range(r).Value = Application.UserName & "/" & Date & "/" &  _
Time
Ende:
Application.EnableEvents = True
End Sub
Das Problem ist jetzt, dass im Protokoll nicht die Zelle mit UserName, Datum und Uhrzeit gefüllt wird, in der ich einen Wert erfasst habe („Eingabe/E7“), sondern die Zelle in die ich nach der Erfassung mit dem Cursor springe (egal on Enter-Taste, Pfeiltaste, per Maus, etc.).
Hat jemand eine Lösung?
Besten Dank im Voraus.
Gruß,
Stefan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Gleiche Zelle in anderem Arbeitsblatt füllen
26.07.2010 15:32:33
JogyB
Hallo Stefan,
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Bereich As Range
Dim r As Range
' ist eigentlich unnötig, benutzt Du ja nur ein Mal
' kannst das auch direkt in das Intersect einbauen
Set Bereich = Range("C5:E8") ' Bereich der Wirksamkeit
Application.EnableEvents = False
' Überlappungbereich bestimmen
Set r = Intersect(Target, Bereich)
' Wenn vorhanden, dann Protokoll schreiben
If Not r Is Nothing Then
Worksheets("Protokoll").Range(r.Address).Value = _
Application.UserName & "/" & Date & "/" & Time
End If
Application.EnableEvents = True
End Sub
Gruß, Jogy
Anzeige
AW: Gleiche Zelle in anderem Arbeitsblatt füllen
26.07.2010 15:36:26
Tino
Hallo,
ich hätte es so gemacht.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Bereich As Range

' Bereich der Wirksamkeit ermitteln 
Set Bereich = Intersect(Range("C5:E8"), Target)
If Not Bereich Is Nothing Then
    'nur erforderlich wenn auf 
    'Protokoll ein Eventmakro eingebaut ist 
    Application.EnableEvents = False
        Worksheets("Protokoll").Range(Bereich.Address).Value = _
           Environ$("Username") & "/" & Date & "/" & Time
    Application.EnableEvents = True
End If
End Sub
Gruß Tino
Anzeige
AW: Gleiche Zelle in anderem Arbeitsblatt füllen
26.07.2010 15:57:08
Evil-Steve
Hallo,
Besten Dank für die schnellen Antworten. Beide Lösungen funktionieren wunderbar.
Noch eine Frage (gebe mich mit der Lösung alleine nicht zufrieden, will meinen Fehler kennen ;-)): Warum hat mein ursprünglicher Code nicht wie gewünscht funktioniert? Ich habe die Adresse der Eingabe-Zelle doch ermittelt und ans Protokoll weitergegeben. Warum hat Excel die Adresse nach der Erfassung weitergegeben?
Gruß,
Stefan
AW: Gleiche Zelle in anderem Arbeitsblatt füllen
26.07.2010 16:01:23
JogyB
Hallo Stefan,
Du hast die Adresse der aktiven Zelle ermittelt, das ist aber zum Zeitpunkt der Ausführung des Codes diejenige Zelle, zu der gewechselt wurde. Deswegen bekommt die Prozedur über Target ja auch die gänderte(n) Zelle(n) mitgeteilt.
Gruß, Jogy
Anzeige
AW: Gleiche Zelle in anderem Arbeitsblatt füllen
26.07.2010 16:05:19
Tino
Hallo,
weil ActiveCell nicht unbedingt die Zelle ist wo die Eingabe stattgefunden hat,
dies gibt Dir Target (Range Objekt) zurück.
Gruß Tino

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige