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

Laufzeitfehler 1004

Laufzeitfehler 1004
26.07.2015 14:41:49
Listopherus

Liebe Excel-Gemeinde,
ich habe ein kleines Makro geschrieben, das tägliche eine Zeile an eine Tabelle anfügt. Das funktioniert auf dem entsprechenden Tabellenblatt über einen CommandButton wunderbar.
Wenn ich aber versuche, es von der Übersicht (Tabelle1) aus zu starten, bekomme ich die wenig aussagekräftige Fehlermeldung "Anwendungs- oder objektdefinierter Fehler".
Hier ist der Code:


Private Sub CommandButton5_Click()
Dim D As Date
Dim c As Long
Sheets("Historie").Activate
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
D = ActiveCell.Offset(-1, 0).Value
If Weekday(D + 1) <> 1 And Weekday(D + 1) <> 7 Then
ActiveCell.Value = D + 1
Else
ActiveCell.Value = D + 3
End If
c = ActiveSheet.UsedRange.Rows.Count
ActiveSheet.Range(Cells(c - 1, 2), Cells(c - 1, 13)).Select 'Hier kommt die Fehlermeldung
Selection.AutoFill Destination:=Range(Cells(c - 1, 2), Cells(c, 13)), Type:=xlFillDefault
End Sub
Ich habe seit gestern alle möglichen Foren durchwühlt und finde keine Lösung.
Wer kann helfen?
Listopherus

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004
26.07.2015 15:14:36
Daniel
Hi
in der Zeile fehlt die Tabellenblattangabe vor den beiden Cells innerhalb der Range.
VBA muss dann selbstständig vermuten, auf welches Tabellenblatt du dich hier beziehen willst.
Da sich der Code in einem Tabellenblattmodul befindet, setzt VBA dann dieses Tabellenblatt ein (also das "Modultabellenblatt")
Du schreibst aber vor die Range: "ActiveSheet".
zu diesem Zeitpunkt hast du aber schon das Tabellenblatt gewechselt und das Modultabellenblatt ist nicht mehr das aktive Sheet, somit liegt die Range auf einem anderen Tabellenblatt, als die Cells die die Range definieren sollen und das erzeugt den Fehler.
richtig wäre hier:
ActiveSheet.Range(ActiveSheet.Cells(c - 1, 2), ActiveSheet.Cells(c - 1, 13)).Select

oder das hier, etwas kürzer:
ActiveSheet.Cells(c - 1, 2).Resize(1, 12).Select
das gleiche Prinzip gilt dann natürlich auch für die nächste Programmzeile:
Zellbezüge ohne Tabellenblattangabe davor beziehen sich immer auf das Modultabellenblatt, da sich der Code in einem Tabellenblattmodul befindet.
die selection ist immer auf dem aktiven Blatt.
Daher solltest du dir mit diesem Wissen die nächste Zeile auch nochmal genauer anschauen.
Gruss Daniel

Anzeige
AW: Laufzeitfehler 1004
26.07.2015 15:40:26
Listopherus
Hallo Daniel,
Du hast völlig Recht. Und das Beste ist: Es funktioniert!
Herzlichen Dank für die Hilfe.
Listopherus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige