Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Aufgezeichnetes Makro, formel gibt laufzeitfehler 1004

Frage Entwicklung VB for Applications

Mitglied: asta311

asta311 (Level 1) - Jetzt verbinden

17.11.2014, aktualisiert 24.11.2014, 1848 Aufrufe, 17 Kommentare

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
Mitglied: Roadrunner0815
18.11.2014 um 07:08 Uhr
Hast du den ganzen Teil aufgezeichnet oder sind da auch ein paar Ergänzungen von dir drin? Wenn ja, wo?
Bitte warten ..
Mitglied: Eintagsfliege
18.11.2014, aktualisiert um 10:36 Uhr
Hallo Roadrunner0815!

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
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
Bitte warten ..
Mitglied: Eintagsfliege
18.11.2014, aktualisiert 19.11.2014
Hallo Asta!

Bezugnehmend auf Deine PN

Soweit ich das Ganze verstanden habe, in etwa so:
01.
Sub MachWas() 
02.
    If ActiveCell.Column = 1 Then   'Nur Spalte A akzeptieren 
03.
        With ActiveCell 
04.
            .Offset(1, 0).Resize(3).EntireRow.Insert Shift:=xlDown  '3 Zeilen einfügen 
05.
            .Offset(2, 7).Value = "Summe:"                          'H3 = Wort Summe 
06.
            .Copy .Offset(2, 8)                                     'A1 -> I3 (Copy) 
07.
            .Offset(2, 9).FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"       'J3 = Summe J1:J2 
08.
            .Offset(0, 11).Resize(1, 2).Cut .Offset(2, 11)          'L1:M1 -> L3:M3 (Cut) 
09.
            .Offset(2, 13).FormulaR1C1 = "=RC[-3]*RC[-1]"           'N3 = K3*M3 
10.
        End With 
11.
         
12.
        With Range("B50:N50").Borders(xlEdgeBottom) 
13.
            .LineStyle = xlContinuous 
14.
            .Weight = xlThin 
15.
        End With 
16.
    End If 
17.
End Sub
Grüße Dieter
Bitte warten ..
Mitglied: asta311
20.11.2014 um 12:21 Uhr
Danke Dieter

Das sieht natürlich bedeutend professioneller aus, als mein Geschriebsel. Meine "Mach was" heißt "Positionssumme" und geht erst in Spalte B los, aber das kann ich ( auch mal was *g). Leider auch hier in Zeile 7 Laufzeitfehler 1004. Und nun???
Vielleicht eine Einstellung, oder Excel 2013, oder, oder..........
Immer noch HILFE

lg Asta
Bitte warten ..
Mitglied: Roadrunner0815
20.11.2014 um 15:31 Uhr
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".
Bitte warten ..
Mitglied: asta311
20.11.2014 um 16:33 Uhr
Hallo roadrunner,

da steht Garnichts, denn da bricht das Makro ab........mit o.g. Fehler. Da ich nur addiere ( und wenns geht später dann mal multipliziere), ist rechnerisch höchstens "null" möglich. Formatiert sind die Zellen auf Standard, dürfte also auch nicht schädlich sein. Fest adressieren kann ich nicht, ich hab immer so an die 200 Positionen, die nach und nach gefüllt werden. Ich kann die Excel-Datei gern mal posten zum Ausprobieren, hab nur wieder mal null Ahnung wie das hier im Forum geht.

Danke für die Hinweise, ich hoffe, ihr bleibt mit mir dran
Bitte warten ..
Mitglied: Eintagsfliege
20.11.2014, aktualisiert um 19:20 Uhr
Hallo Asta!

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...

Was passiert, wenn Du mal manuell 3 Zeilen einfügst und in die Zelle J3 die Formel "=Summe(J1:J2)" schreibst?

Grüße Dieter
Bitte warten ..
Mitglied: asta311
21.11.2014 um 09:02 Uhr
Hallo Dieter,

die Änderungen für die aktuelle Zelle hab ich gemacht, ich verstehe auch den Code gut, was in den einzelnen Zeilen deines Makros passieren soll (auch ohne Kommentar). Zur Probe habe ich in der Tabelle mal die Spalte A gelöscht(ist ein Platzhalter) und mit "Machwas" probiert, also im Original, auch da derselbe Fehler.

Wenn ich das manuell mache, habe ich in j3 eine 0,00 stehen.

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.

Wenns hart kommt, werde ich die komplette Zeile irgendwo im Tabellenblatt hinschreiben, inkl. Formeln und dann per Makro nur noch kopieren. Unelegant, unbefriedigend, aber naja..........

Gruß Asta
Bitte warten ..
Mitglied: Roadrunner0815
21.11.2014 um 09:58 Uhr
Hallo Asta,

wär ne gute Sache, wenn du den Tabelleninhalt mal posten könntest. Wie das geht kann ich dir leider auch nicht sagen, bin hier auch Frischling...
Bitte warten ..
Mitglied: Eintagsfliege
21.11.2014, aktualisiert um 10:09 Uhr
Hallo Asta!

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:
01.
Absolute Zellbezüge: 
02.
.Formula = "SUM(J1:J2)"                     'englisch (VBA) 
03.
.FormulaLocal = "SUMME(J1:J2)"              'deutsch (Sprachpaket) 
04.
 
05.
Relative Zellbezüge: 
06.
.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"        'englisch (VBA) 
07.
.FormulaR1C1Local = "=SUMME(Z[-2]S:Z[-1]S)" 'deutsch (Sprachpaket)
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:
01.
'Active Cell in Spalte B (J3 = Summe J1:J2) 
02.
.Offset(2, 8).FormulaR1C1Local = "=SUMME(Z[-2]S:Z[-1]S)"
Und wenn das auch nicht funktioniert, dann eben mit absoluten Zellbezügen:
01.
'Active Cell in Spalte B 
02.
.Offset(2, 8).Formula = "=SUM(" & .Offset(0, 8).Resize(2, 1).Address & ")"
Grüße Dieter
Bitte warten ..
Mitglied: asta311
21.11.2014 um 10:10 Uhr
Danke Dir Dieter, naja, Kinder werden überbewertet...*fg
Ich hab die engl. Version..........die Formeln sind mir bekannt und ich probier jetzt mal mit deinen Anregungen
Bitte warten ..
Mitglied: Eintagsfliege
21.11.2014 um 10:25 Uhr
Hallo Asta!

Wenn Du eine englische Version benutzt, dann könnte es auch so gehen:
01.
.FormulaR1C1Local = "=SUM(R[-2]C:R[-1]C)"   'englisch (Sprachpaket)
Grüße Dieter
Bitte warten ..
Mitglied: asta311
21.11.2014 um 10:55 Uhr
Nochmal an meine beiden Helfer:

ich würde euch die Datei gern schicken..........

.......so und jetzt Ergebnis:

absolute Bezüge für die Berechnungsformeln funktionieren, sind aber im Ergebnis falsch (logisch, da die Preise pro Pos. unterschiedlich sind und auch die Summen lokal sind), relative Bezüge in den Formeln ergeben Fehler und Abbruch.

Was habe ich da nur losgetreten..........
Bitte warten ..
Mitglied: Eintagsfliege
21.11.2014, aktualisiert 24.11.2014
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:
01.
.Offset(2, 8).Formula = "=SUM(" & Replace(.Offset(0, 8).Resize(2, 1).Address,"$","") & ")"
Ansonsten bin ich jetzt erst mal weg und erst heute Abend wieder zugegen

Grüße Dieter
Bitte warten ..
Mitglied: asta311
24.11.2014 um 09:21 Uhr
Guten Morgen,

funktioniert soweit, Laufzeitfehler ist weg, richtiger Bereich ist für die summe markiert, aber............mein Excel kennt kein SUM und gibt mir #Name? zurück.

Ich hab zuhause kein Excel, deswegen kann ich immer nur probieren wenn ich arbeite...........ist ja auch nur für die Arbeit

Gruß Asta
Bitte warten ..
Mitglied: Eintagsfliege
24.11.2014 um 14:38 Uhr
Hallo Asta!

............mein Excel kennt kein SUM und gibt mir #Name? zurück.
Das soll wohl ein Scherz sein

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
Bitte warten ..
Mitglied: asta311
24.11.2014 um 15:42 Uhr
Nein, kein Scherz, ich weiß, dass VBA Sprache englisch ist, habe aber gelesen, dass die Befehle automatisch verstanden werden, sorry, aber du machst mir nicht viel Mut, ich hab doch geschrieben: blutiger Anfänger,.....und jetzt auch noch mit blutiger Nase

alle beschriebenen Häkchen sind an, meine Objektbibliothek ist 12.0, sonst alles

ich hatte da auch schon nachgeschaut.........und Google bis ins Unendliche befragt
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Laufzeitfehler 438 bei Word und Exel-AddIns (1)

Frage von klanax zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...