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

Automatische Kopierfunktion bei Zellinhaltänderung

Automatische Kopierfunktion bei Zellinhaltänderung
mariche@web.de
Hallo an alle,
ich habe hier ein Problem bei dem ich Eure Hilfe bräuchte.
Ich habe eine Excel-Datei mit zwei Arbeitsblättern.
1. ALL
2. LAENDER
In der Tabelle "ALL" werden im Bereich A1:A21 über eine Schnittstelle zu einem anderen Programm Daten eingelesen.
Jetzt hätte ich gerne, dass bei jeder Änderung eines Zellinhalts von A1:A21 dieser geänderte Zellinhalt in das Tabellenblatt "LAENDER" fortlaufend untereinander kopiert wird.
Beispiel:
Änderung des Zellinhalts aus A2 im Tabellenblatt ALL
Kopieren des geänderten Inhalts in Zelle A10 im Tabellenblatt LAENDER
Änderung des Zellinhalts aus A10 im Tabellenblatt ALL
Kopieren des geänderten Inhalts in Zelle A11 im Tabellenblatt LAENDER
Änderung des Zellinhalts aus A5 im Tabellenblatt All
Kopieren des geänderten Inhalts in Zelle A12 im Tabellenblatt LAENDER
...
Ich hoffe es ist einigermaßen verständlich.
Vielen Dank schon einmal an alle die sich Gedanken machen.
Beste Grüße
Maria
AW: Automatische Kopierfunktion bei Zellinhaltänderung
10.08.2012 09:34:31
fcs
Hallo Maria,
du kannst für das Blatt "ALL" ein Ereignismakro einrichten, das bei Eingaben im relvanten Zellbereich den Wert im Blatt "LAENDER" einträgt.
Gruß
Franz
'Code im VBA-Editor unter Tabellenmodul ALL
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastCell As Range
If Target.Cells.Count = 1 _
And Not Intersect(Target, Range("A1:A21")) Is Nothing Then
With Worksheets("LAENDER")
If Target  "" Then
Set LastCell = .Cells(.Rows.Count, 1).End(xlUp)
LastCell.Offset(1, 0) = Target.Value
LastCell.Offset(1, 1) = Now 'Zeitpunkt des Eintrags
End If
End With
End If
End Sub

Anzeige
AW: Automatische Kopierfunktion bei Zellinhaltänderung
10.08.2012 11:48:23
mariche@web.de
Hallo Franz,
danke für Deine schnelle Antwort.
Habe mit dem geposteten Code jedoch ein Problem.
Es werden trotz Änderungen im Bereich A1:A21 im Tabellenblatt ALL leider keine Einträge das Tabellenblatt LAENDER vorgenommen.
Beste Grüße
Maria
AW: Automatische Kopierfunktion bei Zellinhaltänderung
10.08.2012 12:26:02
fcs
Hallo Maria,
1. ) Hast du den Code im VBA-Editor den Code wirklich unter der Tabelle "ALL" eingefügt?
2. ) Sind die Makros in der Datei aktiviert?
3. ) Ist im Menü "Entwicklertools" der "Entwurfmodus" deaktiviert.
4.) Hast du deine Datei als xlsm-Datei (mit Makros) gespeichert?
5.) Theoretisch könnten auch noch die Ereignismakros deaktiviert sein. Das müßte dann aber ein anderes Makro gemacht haben.
6.) Sind unter "Excel-Option-Sicherheitscenter-Einstellungen für Makros" die Einstellungen so, das Makros ggf. nach Bestätigung aktiviert werden. Typischerweise sollte mindestens die 2. Option (Alle Mkros mit Benachrichtigung deaktivieren) aktiv sein.
Speichere die Datei mit Makros.
Dann Excel schließen und neu öffnen, dann Datei öffnen. Dabei falls erforderlich, Makros zulassen .
Falls es bei euch generelle Restriktionen bei der Verwendung von Makros gibt, dann muss du dich mal mit deiner IT-Betreuung in Verbindung setzen.
Gruß
Franz
Anzeige
AW: Automatische Kopierfunktion bei Zellinhaltänderung
10.08.2012 13:20:24
mariche@web.de
Hallo Franz,
1. Code steht nur unter Tabelle ALL
2. Markros sind aktiviert
3. Entwurfsmodus ist nicht aktiv
4. Datei ist als xlsm gespeichert
5. Habe in der Datei nur noch ein Makro, welches dafür aber nicht verantwortlich sein kann
6. Hab´s sogar mit der Einstellung alle Makros zulassen versucht
Excel auch schon neu gestartet.
Wenn ich in dem geposteten Code die Range von A1:A21 auf bspw. A60:A70 ändere und dort dann einen Zelleintrag von Hand ändere bekomme ich eine Laufzeitfehlermeldung. In "Set LastCell = .Cells ....." scheint es ein Problem zu geben.
Beste Grüße
Mariche
Anzeige
AW: Automatische Kopierfunktion bei Zellinhaltänderung
10.08.2012 14:16:11
fcs
Hallo Maria,
also ich hab das Makro in 2 leeren Tabellenblättern getestet und da werden die Einträge aus ALL Bereich A1:A21 beginnend ab Zelle A2 im Blatt "LAENDER" eingetragen.
Bei dir kommt bei Änderung des Bereiches eine Fehlermeldung. Das ist gut, es zeigt ja zumindest, dass das Makro gestartet wird.
Warum ein Fehler kommt - ?
Probleme werden häufig durch verbundenen Zellen verursacht. Gibt es solche in deinen Tabellen?
Ansonsten ändere das Makro mal wie folgt, dann sollte bei jeder Eingabe im Blatt "ALL" eine Meldung angezeigt werden und einen Hinweis geben was evtl. Falsch läuft.
Ich hoffe mal, das Werte in A1:A21 nicht per Formel dor übernommen werden.
Das Change-Ereignis reagiert nur auf manuelle Eingaben und Einträge per Makro - nicht auf Formel-Wertänderungen.
Gruß
Franz
'Code im VBA-Editor unter Tabellenmodul ALL
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim LastCell As Range
If Target.Cells.Count = 1 _
And Not Intersect(Target, Range("A1:A21")) Is Nothing Then
Application.EnableEvents = False
With Worksheets("LAENDER")
If Target  "" Then
Set LastCell = .Cells(.Rows.Count, 1).End(xlUp)
LastCell.Offset(1, 0) = Target.Value
LastCell.Offset(1, 1) = Now 'Zeitpunkt des Eintrags
MsgBox "Wert """ & Target.Value & """ in LAENDER-Zelle""" _
& LastCell.Offset(1, 0).Address & """ eingetragen", , "Testmeldung"
Else
MsgBox "Zelle""" & Target.Address & """ in A1:A21 ist leer", , "Testmeldung"
End If
End With
Application.EnableEvents = True
ElseIf Target.Column = 1 And Target.Row 

Anzeige
AW: Automatische Kopierfunktion bei Zellinhaltänderung
11.08.2012 23:22:25
Maria
Upps,
dass die Werte in A1:A21 per Formel übernommen werden hatte ich nicht extra erwähnt, da ich dachte, dass das klar ist wegen der erwähnten Schnittstelle.
*schäm*
AW: Automatische Kopierfunktion bei Zellinhaltänderung
12.08.2012 09:38:05
fcs
Hallo Maria,
das mit dem Einlesen via Schnittstelle (und den daraus möglicherweise resultierenden Einschränkungen bzgl. Ereignismakros) hatte ich auch nicht vollständig registriert.
Je nachdem was sich sonst noch so alles im Tabellenblatt tut könnte man immer noch was machen.
A) wenn das Einlesen der Werte in den Bereich Berechnungen auslöst, dann könnte man die Werte auch nach jeder Neuberechnung des Tabellenblatts übertragen, ggf. mit einem Vergleich Alt-Neu und dann nur geänderte. Hier kann man das Worsheet_Calculate-Ereignis verwenden.
B) Zeitgesteuert wird per OnTime-Methode in festen Zeitabständen (ab 1 Sekunde aufwärts geprüft, ob sich Werte geändert haben.
C) evtl. kan man das ja auch irgendwie an die Datenübernahme über die Schnittstelle koppeln.
Gruß
Franz
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige