Aufgezeichnetes Makro, formel gibt laufzeitfehler 1004
Hallo liebe Leute,
ich bin sowas von Anfänger mit Makros für Excel, also bitte nachfragen, wenn ich mich nicht klar genug ausdrücke.
Ich möchte von einer (beliebigen) aktiven Zelle(hier a1) ausgehend mittels Button folgendes erreichen
füge unter dieser Zelle drei leere Zeilen ein
Schreibe in Zelle (h3) das Wort Summe
kopiere in die nächstfolgende Spalte(i3) die anfangs aktivierte Zelle(a1)
Schreibe in die nächste Spalte(j3) die Summe von den zwei direkt darüber liegenden Zeilen(j1:j2) bis maximal zum Anfang (j1).........hier will ich später Zeilen einfügen
verschiebe die Zellen L1 und M1 zwei Zeilen nach unten
rechne in n3 = k3*m3
füge Unterstreichungen hinzu.
Aufgezeichnet habe ich erstmal...........
Sub Positionssumme()
'
' Positionssumme Makro
'
'
ActiveCell.Offset(1, 0).Rows("1:3").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 11).Range("A1:B1").Select
Selection.Cut Destination:=ActiveCell.Offset(2, 0).Range("A1:B1")
ActiveCell.Offset(2, -4).Range("A1").Select
ActiveCell.FormulaR1C1 = "Summe Pos."
ActiveCell.Offset(-2, -6).Range("A1").Select
Selection.Copy
ActiveCell.Offset(2, 8).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1").Select
Range("A1").FormulaR1C1 = "=SUM(R[-1]C:R[-2]C)"
ActiveCell.Offset(0, 3).Range("A1").Select
Range("A1").FormulaR1C1 = "=RC[-3]*RC[-1]"
Range("B50:N50").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
nicht ganz bis zum Ende, weil ich neugierig war, und siehe da........beide Formeln führen zu Laufzeitfehler 1004. Ich suche jetzt seit zwei Tagen den Fehler,
1.1 Baustelle einrichten
Summe Pos1.1 0,000 psch 10.000,00 0,00
so ungefähr solls aussehen.
Helft mir bitte weiter.
Gruß Asta
ich bin sowas von Anfänger mit Makros für Excel, also bitte nachfragen, wenn ich mich nicht klar genug ausdrücke.
Ich möchte von einer (beliebigen) aktiven Zelle(hier a1) ausgehend mittels Button folgendes erreichen
füge unter dieser Zelle drei leere Zeilen ein
Schreibe in Zelle (h3) das Wort Summe
kopiere in die nächstfolgende Spalte(i3) die anfangs aktivierte Zelle(a1)
Schreibe in die nächste Spalte(j3) die Summe von den zwei direkt darüber liegenden Zeilen(j1:j2) bis maximal zum Anfang (j1).........hier will ich später Zeilen einfügen
verschiebe die Zellen L1 und M1 zwei Zeilen nach unten
rechne in n3 = k3*m3
füge Unterstreichungen hinzu.
Aufgezeichnet habe ich erstmal...........
Sub Positionssumme()
'
' Positionssumme Makro
'
'
ActiveCell.Offset(1, 0).Rows("1:3").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 11).Range("A1:B1").Select
Selection.Cut Destination:=ActiveCell.Offset(2, 0).Range("A1:B1")
ActiveCell.Offset(2, -4).Range("A1").Select
ActiveCell.FormulaR1C1 = "Summe Pos."
ActiveCell.Offset(-2, -6).Range("A1").Select
Selection.Copy
ActiveCell.Offset(2, 8).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1").Select
Range("A1").FormulaR1C1 = "=SUM(R[-1]C:R[-2]C)"
ActiveCell.Offset(0, 3).Range("A1").Select
Range("A1").FormulaR1C1 = "=RC[-3]*RC[-1]"
Range("B50:N50").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
nicht ganz bis zum Ende, weil ich neugierig war, und siehe da........beide Formeln führen zu Laufzeitfehler 1004. Ich suche jetzt seit zwei Tagen den Fehler,
1.1 Baustelle einrichten
Summe Pos1.1 0,000 psch 10.000,00 0,00
so ungefähr solls aussehen.
Helft mir bitte weiter.
Gruß Asta
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 255025
Url: https://administrator.de/forum/aufgezeichnetes-makro-formel-gibt-laufzeitfehler-1004-255025.html
Ausgedruckt am: 23.04.2025 um 02:04 Uhr
17 Kommentare
Neuester Kommentar

Hallo Roadrunner0815!
Und da er/sie die Formeln in die gleiche Zelle in A1 einfügt, steht logischerweise auch nur die letzte drin (=XFB1*XFD1), sofern der Debugger nicht rebelliert...
Grüße Dieter
Hast du den ganzen Teil aufgezeichnet oder sind da auch ein paar Ergänzungen von dir drin? Wenn ja, wo?
In allem, was mit Offsets und Range zu tun hat und dadurch völlig sinnfrei geworden ist. Auch die Formeln ergeben keinen Sinn, da sie in A1 (Zeile 1/Spalte 1) mit negativen Werten (z.B. R[-1], C[-3]) keine vernünftigen Zellbereiche definieren:=SUM(R[-1]C:R[-2]C) | steht für | =SUMME(A1048575:A1048576) |
=RC[-3]*RC[-1] | steht für | =XFB1*XFD1 |
Grüße Dieter

Hallo Asta!
Bezugnehmend auf Deine PN
Soweit ich das Ganze verstanden habe, in etwa so:
Grüße Dieter
Bezugnehmend auf Deine PN
Soweit ich das Ganze verstanden habe, in etwa so:
Sub MachWas()
If ActiveCell.Column = 1 Then 'Nur Spalte A akzeptieren
With ActiveCell
.Offset(1, 0).Resize(3).EntireRow.Insert Shift:=xlDown '3 Zeilen einfügen
.Offset(2, 7).Value = "Summe:" 'H3 = Wort Summe
.Copy .Offset(2, 8) 'A1 -> I3 (Copy)
.Offset(2, 9).FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" 'J3 = Summe J1:J2
.Offset(0, 11).Resize(1, 2).Cut .Offset(2, 11) 'L1:M1 -> L3:M3 (Cut)
.Offset(2, 13).FormulaR1C1 = "=RC[-3]*RC[-1]" 'N3 = K3*M3
End With
With Range("B50:N50").Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End If
End Sub
Grüße Dieter
Wenn du auf deinem Excel-Blatt in die Zelle J3 (da müsste ja wenn du darauf klickst die Formel oben angezeigt werden) schaust steht da ein sinnvoller Wert?
Eine andere Idee wäre noch, kann es sein das du versuchst eine Division durch 0 zu machen bzw. etwas anderes als eine Zahl den den Zellen J1 und J2 steht?
Wenn du von der ersten bis zur letzten Zeile Daten adressieren möchtest, dann veruch es mal mit z.B. "!$A8".
Eine andere Idee wäre noch, kann es sein das du versuchst eine Division durch 0 zu machen bzw. etwas anderes als eine Zahl den den Zellen J1 und J2 steht?
Wenn du von der ersten bis zur letzten Zeile Daten adressieren möchtest, dann veruch es mal mit z.B. "!$A8".

Hallo Asta!
Was passiert, wenn Du mal manuell 3 Zeilen einfügst und in die Zelle J3 die Formel "=Summe(J1:J2)" schreibst?
Grüße Dieter
Meine "Mach was" heißt "Positionssumme" und geht erst in Spalte B los,
Soll heißen, dass sich die ActiveCells in Spalte B anstatt in Spalte A befinden?Leider auch hier in Zeile 7 Laufzeitfehler 1004. Und nun???
Vielleicht eine Einstellung, oder Excel 2013, oder, oder.......
Sorry, den Laufzeitfehler in Zeile 7 kann ich beim besten Willen nicht nachvollziehen. Sollte eigentlich in allen Excel-Versionen problemlos funktionieren...Vielleicht eine Einstellung, oder Excel 2013, oder, oder.......
Was passiert, wenn Du mal manuell 3 Zeilen einfügst und in die Zelle J3 die Formel "=Summe(J1:J2)" schreibst?
Grüße Dieter

Hallo Asta!
Wobei die restlichen Formulas entsprechend einer Eingabe automatisch angepasst werden und in der Excel-Oberfläche die Formel steht, die in .FormulaLocal (absoluter Zellbezug) hinterlegt ist...
Wenn Du eine deutschsprachige Excelversion hast, dann probier mal folgendes:
Und wenn das auch nicht funktioniert, dann eben mit absoluten Zellbezügen:
Grüße Dieter
Ich hab mal mein Informatiktöchterlein befragt, und in ihrer Firma hat keiner einen Plan, weil hier wohl absolute und relative Bezüge gemischt sind. Das nur so nebenbei.
Gemischt ist da nichts. Formeln können entweder mit relativen oder absoluten Zellbezügen angegeben werden und in Deinem Fall sind in Abhängigkeit von ActiveCell eigentlich relative Zellbezüge erforderlich. Desweiteren besteht die Wahl, die Formel in der internen (VBA-englisch) Sprache oder der installierten Sprachversion anzugeben. Hier mal ein paar Beispiele:Absolute Zellbezüge:
.Formula = "SUM(J1:J2)" 'englisch (VBA)
.FormulaLocal = "SUMME(J1:J2)" 'deutsch (Sprachpaket)
Relative Zellbezüge:
.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" 'englisch (VBA)
.FormulaR1C1Local = "=SUMME(Z[-2]S:Z[-1]S)" 'deutsch (Sprachpaket)
Wenn Du eine deutschsprachige Excelversion hast, dann probier mal folgendes:
'Active Cell in Spalte B (J3 = Summe J1:J2)
.Offset(2, 8).FormulaR1C1Local = "=SUMME(Z[-2]S:Z[-1]S)"
Und wenn das auch nicht funktioniert, dann eben mit absoluten Zellbezügen:
'Active Cell in Spalte B
.Offset(2, 8).Formula = "=SUM(" & .Offset(0, 8).Resize(2, 1).Address & ")"
Grüße Dieter

Hallo Asta!
Wenn Du eine englische Version benutzt, dann könnte es auch so gehen:
Grüße Dieter
Wenn Du eine englische Version benutzt, dann könnte es auch so gehen:
.FormulaR1C1Local = "=SUM(R[-2]C:R[-1]C)" 'englisch (Sprachpaket)
Grüße Dieter

Hallo Asta!
Verstehe ich jetzt nicht so ganz, aber wenn dies darauf zurückzuführen ist, dass die Formel ($)-Zeichen enthält, dann läßt sich das auch noch ändern:
Ansonsten bin ich jetzt erst mal weg und erst heute Abend wieder zugegen
Grüße Dieter
Verstehe ich jetzt nicht so ganz, aber wenn dies darauf zurückzuführen ist, dass die Formel ($)-Zeichen enthält, dann läßt sich das auch noch ändern:
.Offset(2, 8).Formula = "=SUM(" & Replace(.Offset(0, 8).Resize(2, 1).Address,"$","") & ")"
Grüße Dieter

Hallo Asta!

Die interne (VBA)-Sprache ist englisch und Du hast eine englische Version *kopfschüttel*
Schau mal in diesen Kommentar zwecks Einträge im Objectkatalog. Ansonsten fällt mir dazu leider nix mehr ein..
Grüße Dieter
............mein Excel kennt kein SUM und gibt mir #Name? zurück.
Das soll wohl ein Scherz seinDie interne (VBA)-Sprache ist englisch und Du hast eine englische Version *kopfschüttel*
Schau mal in diesen Kommentar zwecks Einträge im Objectkatalog. Ansonsten fällt mir dazu leider nix mehr ein..
Grüße Dieter