Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufzeitfehler 1004

Laufzeitfehler 1004
21.03.2006 17:00:33
flogge
Hallo an alle,
ich bin ein Neuling in Sachen VBA usw. und hab mich jetzt an Excel versucht.
Diese Excel-Datei hat 3 Arbeitsblätter.
Dabei habe ich in Tabelle1 einen CommandButton eingeführt, der ein Makro ablaufen lässt. Mit diesem Makro werden bestimmte Werte + Gültigkeit aus bestimmten Bereichen von Tabelle1 in Tabelle2 kopiert. Die einzelnen Arbeitsblätter sind geschützt.
Sub Kopieren ()
Tabelle2.Unprotect Password:="test"
Dim kwpkopierbereich As Object
Dim navikopierbereich As Object
Dim zusatzkopierbereich As Object
Dim kwpeinfuegebereich As Object
Dim navieinfuegebereich As Object
Dim zusatzeinfuegebereich As Object
Set kwpkopierbereich = Tabelle1.Range("H4")
Set kwpeinfuegebereich = Tabelle2.Range("H4")
Set navikopierbereich = Tabelle1.Range("E7:J27")
Set navieinfuegebereich = Tabelle2.Range("E7:J27")
Set zusatzkopierbereich = Tabelle1.Range("D28:J36")
Set zusatzeinfuegebereich = Tabelle2.Range("D28:J36")
kwpkopierbereich.Copy
kwpeinfuegebereich.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
navikopierbereich.Copy
navieinfuegebereich.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
zusatzkopierbereich.Copy
zusatzeinfuegebereich.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Tabelle2.Select
Range("H4").Select
Tabelle2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="test"
End Sub
Das Makro „Kopieren“ funktioniert für sich allein ganz gut. Nun hab ich für die Tabelle2 ein weiteres Makro geschrieben. Dieses Makro vergleicht die Werte bestimmter Bereich in Tabelle1 und Tabelle2 und ändert die Schriftfarbe von Werten von Tabelle2, die von Tabelle1 abweichen. Weil ich, wie bereits geschrieben, Neuling bin, hab ich quasi jede Zelle einzeln angesprochen und ein langes langes langes Makro rausbekommen. :o) Hier ein Auszug.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Wert1 = Tabelle2.Range("E13").Value
Wert2 = Tabelle1.Range("E13").Value
If wert1 = wert2 Then
Tabelle2.Range("E13").Font.color = RGB(0, 0, 0)
Else
Tabelle2.Range("E13").Font.color = RGB(255, 0, 0)
End If
End Sub

Auch dieses funktioniert für sich allein ganz gut, nur nicht zusammen. Wenn ich auf Tabelle1 den Button klicke und somit das Makro „Kopieren“ aktiviere, dann bekomme ich die Fehlermeldung: Laufzeitfehler 1004 Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden + die gelbe Hinterlegung an dieser Stelle "navieinfuegebereich.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=False".
Beim nachvollziehen der Einzelschritte wird gezeigt, dass genau an der gelb markierten Stelle das zweit Makro aufgerufen und ausgeführt wird. Warum? Welchen Fehler habe ich gemacht? Wer kann mir hier weiterhelfen?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004
21.03.2006 19:51:41
Uwe
Hi flogge,
Du hast das zweite Makro in das Klassenmodul einer Tabelle geschrieben als:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Das bedeutet, das das Makro ausgeführt wird, sobald in der Tabelle die Auswahl geändert wird. Beim Einfügen durch Dein erstes Makro wird die Auswahl geändert (Wenn zufällig gerade die Zelle ausgewählt ist, in die eingefügt werden soll, dürfte Dein zweites Makro noch nicht anlaufen). Und in dem Moment wo Dein zweites Makro die Formatierung ändert geht der Kopierte Wert "verloren" und es ist nichts mehr zum einfügen da. Dann kommt die Fehlermeldung. Also: die beiden Makros "beißen sich".
Wie Du das Problem lösen kannst, kann ich schlecht sagen, notfalls musst Du das zweite Makro in ein allgemeines Modul legen und immer über einen Button starten oder am Ende des ersten Makros aufrufen.
Viel Glück (;-)
Gruß
Uwe
(:o)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige