Excel: Wie kann ich erkennen ob Zeile geändert wurde

  • #1
G

Ginkgo

Bekanntes Mitglied
Themenersteller
Dabei seit
27.01.2005
Beiträge
66
Reaktionspunkte
0
Ort
Hannover
Hallo,

Ich habe eine Exceltabelle in der verschiedene Leute editieren.
Ich möchte gerne, dass die erste Zelle sich ändert, mit datum oder einem Kreuz o.ä. wenn irgendwo in der Zeile eine Zelle verändert wurde.
Ist das möglich?

Danke schon mal
 
  • #2
Hallo hier Heck,
schau doch einfach auf den Timestamp (ChangeTime) des Files... *verdamt*
 
  • #3
Ola,

und wo bitte steht im Timestamp die Zeile, in der die Änderung war?
*Applaus für die Antwort*

Das geht m.e. nurt mit einem Makro, dass die Änderungen in den Zeilen prüft und dann gezielt eine andere Zelle verändert. Es muss im Forum dazu schon eine Lösung geben ....

Treffer: http://www.wintotal-forum.de/index.php/topic,5872.15.html
 
  • #4
Moin,

also soweit ich den anderen Thread vestanden habe, kommt die Meldung über die Änderung der Zellle immer sofort. Das Problem ist das die Excel tapete von mehreren gepflegt wird und ich am Ende sehen will welche Zeilen ich in Augenschein nehmen muss weil dort etwas geändert wurde. :-\
Am liebsten wäre mir ja das dann in die erste Zelle der Reihe ein x o.ä. geschrieben wird und ich über autofilter diese dann rausfiltern kann.
Oder geht das auch so ähnlich mit vb? habe davon allerdings nicht viel Plan... :(
 
  • #5
Ola,

also prinzipiell sollte es gehen, wenn die Meldung durch das Schreiben eines Wertes in eine bestimmte Zelle der gleichen Zeile ersetzt wird.
In welche Spalte hättest Du es denn gern? Spalte A? In welchen Splaten erfolgen denn die Änderungen? Wie groß ist der Bereich, der aus Änderungen kontrolliert werden soll?
 
  • #6
Hallihallo, :)
also ich hatte mir gedacht in SPalte A den Indikator für eine Ändrung anzeigen zu lassen. Dann habe ich 3 Spalten in denen die User Änderungen vornehmen und das ganze kann auf ca 200 Zeilen anwachsen. Im Moment sind es 80...
Besteht noch Hoffnung für den Patienten? ???
 
  • #7
Ola,

ja, besteht, aber nicht unmittelbar und sofort ... das kann schon ein wenig dauern
 
  • #8
PCDjoe schrieb:
Ola,

ja, besteht, aber nicht unmittelbar und sofort ... das kann schon ein wenig dauern
Das ist okay, I möchte ja etwas und das Problem pressiert nicht ::)
Ich freu mich schon wenn mir überhaupt jemand helfen kann
 
  • #9
Hi Ginkgo,

nachfolgender Makro sollte das Gewünschte tun.

Löschen von ganzen Zeilen bekommt er nicht mit.
Aber alle Änderungen in Zeilen.

Der Code ist in die Code-Seite von->DieseArbeitsmappe' zu kopieren.
a) Arbeitsmappe öffen
a) VB-Editor öffne mit Alt+F11
c) im Projekt-Fenster einen Doppelklick auf->DieseArbeitsmappe'
d) den Code per Cut&Paste in das sich öffnende Code-Fenster kopieren
e) VB-Editor schliessen mit Alt+Q
f) Mappe speichern

und ausprobieren, ob Änderungen in Spalte A ein Datum hervorrufen.

Gruß Matjes :)

Code:
Dim b_bussy As Boolean
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
 ->Bei Änderungen in der Arbeitsmappe wird für jede geänderte Zelle
 ->in der betreffenden Zeile in Spalte A das Datum gesetzt
 ->Von der Änderung ausgenommen, ist die Zeile 1 eines jeden Blattes,
 ->um Überschriften nicht zu überschreiben
 ->Löscht man ganze Zeilen, geht das an diesem Makro vorbei.
 ->Löschen von ganzen Zeilen wird nicht erfaßt !!!
  
  Const Spalte_A = 1
  
  Dim Zelle As Range, Datum As Date
  
 ->Prüfen, ob Makro gerade läuft und das Datum ändert
  If Not b_bussy Then
   ->Erneute Makro-Verarbeitung sperren
    b_bussy = True
   ->Datum bestimmen
    Datum = Format(Now(), yyyy.mm.dd)
    
   ->Für alle geänderten Zellen
    For Each Zelle In Target
     ->In Zeile 1 (Überschriften-Zeile) keine Kennung setzen
      If Zelle.Row <> 1 Then
       ->Datum bzgl. betreffender Zeile in Spalte A setzen
        Sh.Cells(Zelle.Row, Spalte_A).Value = Datum
      End If
    Next
   ->Erneute Makro-Verarbeitung freigeben
    b_bussy = False
  End If
End Sub
 
  • #10
Das Löschen ganzer Zeilen bzw. Spalten kan man mit folgendem Makro in der Code-Seite der Arbeitsblätter vermeiden.

Funktion des Makro:
Verhindert, daß ganze Zeilen oder Spalten selektiert werden.
Damit kann auch keine ganze Zeile bzw. Spalte gelöscht werden

Der Makro muß in die Code-Seite der einzelnen Tabellenblätter kopiert werden.

Damit bleibt dann nur noch->Zellen löschen' als Änderung, die am Change-Ereignis vorbei geht.

Gruß Matjes :)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 ->Verhindern, daß ganze Zeilen oder Spalten selektiert werden
  If (Target.Rows.Count = (Target.Count \ 256)) Or _
      Target.Columns.Count = (Target.Count \ 65536) _
      Then Target.Item(1).Select
End Sub
 
  • #11
Waaahnsinn!!! :D

Das funktioniert...und genau so wie ich es wollte, sogar besser wenn ich es mir recht überlege.
Danke!! ::)
 
  • #12
es hat sich nun doch ein Problem eingeschlichen,
das MAkro verhindert ein Undo sobald man eine Zelle verlassen hat, kan man das umgehen?
:'(
 
  • #13
Hi Ginkgo,

dazu hab ich momentan keine Idee. Das Undo läßt sich nicht durch Makros steuern.

Gruß Matjes :)
 
Thema:

Excel: Wie kann ich erkennen ob Zeile geändert wurde

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben