Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
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

Zelle beobachten und neue Werte speichern

Zelle beobachten und neue Werte speichern
28.11.2012 11:48:16
MPH
Hi Leute,
ich hätt mal wieder ne Frage und hoffe ihr könnt mir helfen.
ich möchte gern eine Zelle beobachten und immer wenn der Wert sich ändert und nicht dem Altwert entspricht,
soll der Neue Wert in eine neue Zeile eines anderen Tabellenblatts geschrieben werden.usw usw.
Des soll dann so aussehen, dass ich in dieser Tabelle dann alle Werte der Beobachteten Zelle untereinander stehen habe. Daraus möchte ich dann ein Liniendiagramm machen.
Ich habe jetzt schon rumgedoktort mit
Private Sub Worksheet_Change(ByVal Target As Range) und intersect. Aber ich habe leider noch nichts brauchbares hinbekommen.
Hat jemand sowas schonmal gemacht und kann mir vieleicht helfen.
Vielen Dank schonmal.
Grüße

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle beobachten und neue Werte speichern
28.11.2012 13:11:44
Klaus
Hi MPH,
wir sprechen uns in diesem Forum gerne mit Realnamen / Vornamen an.
Ich würd das so machen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sZelle As String        'das beobachten
Dim wksOutput As Worksheet  'hierhin beobachten
Dim iColOut As Integer      'Spalte zum beobachten
Dim lRow As Long
'Zelle A1 beobachten
sZelle = "$A$1"
'hierhin die "Beobachtung" schreiben
Set wksOutput = Sheets("Sheet2")    'Tabellenname ändern!
iColOut = 1                         'Output-Spalte ändern! A=1, B=2 usw
If Target.Address = sZelle Then
With wksOutput
lRow = .Cells(Rows.Count, iColOut).End(xlUp).Row + 1
.Cells(lRow, iColOut).Value = Target.Value
'optional: wann geändert (ein oder aus kommentieren)
.Cells(lRow, iColOut).Offset(0, 1).Value = Now
'optional: von wem geändert (ein oder aus kommentieren)
.Cells(lRow, iColOut).Offset(0, 2).Value = Environ("username")
End With
Else
End If
End Sub
Anmerkung: das If Target.Address = sZelle Then ist ein wenig gebastelt und geht eleganter, ich hab nur grad die Syntax für "Intersect" nicht drauf. Funktioniert aber.
Grüße,
Klaus M.vdT.

Anzeige
AW: Zelle beobachten und neue Werte speichern
28.11.2012 13:33:48
MPH
Hi Klaus,
alles klar.
Ich werde das mal ausprobieren.
Vielen Lieben Dank für deine Hilfe.
Gruß Michael

danke für die Rückmeldung! owT.
28.11.2012 14:01:40
Klaus
.

AW: danke für die Rückmeldung! owT.
28.11.2012 15:54:23
MPH
Hi Klaus
ich bins nochmal.
erst einmal Danke es funktioniert. ;-)
Kurze Frage noch. Was muss ich dem Code noch hinzufügen, dass es bei max 50 Werten aufhört?
Ausserdem wird ausser den Zahlen noch Administrator und das Zeichen "#" in die Zellen neben der Zahl geschrieben. WIe kann ich das verhindern?
Gruß
Michael

Code überarbeitet
28.11.2012 16:14:56
Klaus
Hi,
Basiskentnisse in VBA, ja? Ich hab den Code extra kommentiert! Kommentare sind die grünen Dinger in Klartext, die erklären was genau der Code an dieser Stelle macht.
Aa steht nicht "#", sondern Datum + Uhrzeit (siehst du, wenn du die Spalte breiter machst).
.Cells(lRow, iColOut).Offset(0, 1).Value = Now
Und "Adminstrator" steht da, weil du als jener angemeldet bist.
.Cells(lRow, iColOut).Offset(0, 2).Value = Environ("username")
die entsprechenden Zeilen einfach löschen oder auskommentieren, wenn sie nicht gewünscht sind. Wie im Kommentar steht!
Um nach 50 Zeilen aufzuhören, setze einfach hinter diese Zeile
lRow = .Cells(Rows.Count, iColOut).End(xlUp).Row + 1
eine Abschlussbedingung, zb: if lRow > 50 then end
Und weil ich so nett bin, hab ich das alles gemacht und du kannst den Code unten einfach wieder rauskopieren ohne ihn zu lesen :-)
Grüße,
Klaus M.vdT.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sZelle As String        'das beobachten
Dim wksOutput As Worksheet  'hierhin beobachten
Dim iColOut As Integer      'Spalte zum beobachten
Dim lRow As Long
'Zelle A1 beobachten
sZelle = "$A$1"
'hierhin die "Beobachtung" schreiben
Set wksOutput = Sheets("Sheet2")    'Tabellenname ändern!
iColOut = 1                         'Output-Spalte ändern! A=1, B=2 usw
If Target.Address = sZelle Then
With wksOutput
lRow = .Cells(Rows.Count, iColOut).End(xlUp).Row + 1
if lRow 

Anzeige
AW: Code überarbeitet
28.11.2012 16:22:38
MPH
Hi Klaus,
ja auf aller niedrigster Basis. ;-)
Nachdem ich geschrieben habe habe ich selbst gemerkt, dass es das optionale ist was du dazugeschrieben hast.Sorry entschuldige meine Dummheit!!!
Das mit den max 50 habe ich noch gebraucht.
Vielen vielen Dank für deine Hilfe.
Gruß
Michael

AW: Code überarbeitet
28.11.2012 17:21:10
MPH
Hi Klaus,
muss dich leider ein allerletztes mal nerven. :-)
Ich wollte das jetzt so anpassen, dass es für mehrere Zellen funktioniert. Aber wie erwartet funzt es nicht. Ich hatte es so angepasst:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sZelle() As String        'das beobachten
Dim wksOutput As Worksheet  'hierhin beobachten
Dim iColOut As Integer      'Spalte zum beobachten
Dim lRow As Long
Dim i As Long
Dim Beobachtungswerte As Long
Beobachtungswerte = 14
'Zelle A1 beobachten
For i = 1 To Beobachtungswerte
sZelle(i) = Cells(9 + i, 7)
'hierhin die "Beobachtung" schreiben
Set wksOutput = Sheets("Verbindung")    'Tabellenname ändern!
iColOut = Cells(1 + i, 9)                      'Output-Spalte ändern! A=1, B=2 usw
If Target.Address = sZelle(i) Then
With wksOutput
lRow = .Cells(Rows.Count, iColOut).End(xlUp).Row + 1
If lRow 

Ich bekomme jetzt aber bei "sZelle(i) = Cells(9 + i, 7)" die Fehlermeldung 9, dass sich der Index ausserhalb des gültigen Bereichs befindet.
Und bei der Zeile "iColOut = Cells(1 + i, 9)" glaub ich nicht, dass es funktioniert. Weiss nicht wie ich vorgeben soll, dass er es jeweils immer eine Spalte neben dran anzeigt. So dass ich von 14 beobachteten Zellen dann im Tabellenblatt 14 Spalten mit Werten habe.
Kannst du mir bitte nochmal helfen?
Vielen Dank schonmal.
Gruß
Michael

Anzeige
bei sZelle(i) fehlt Spalte - zB. sZelle(i,1)
28.11.2012 18:52:33
robert
owT

AW: bei sZelle(i) fehlt Spalte - zB. sZelle(i,1)
29.11.2012 10:19:56
MPH
Hi Robert,
danke für die Antwort.
Leider bleibt der Fehler!!!!!!
Gruß
Michael

probier: Dim sZelle as Long owT
29.11.2012 13:08:29
robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige