Summierung mit VBA-Makro

Hallo Experten!

Als Hobby-Makroschreiber stehe ich wieder einmal vor einer für mich zur großen Hürde und ersuche um Hilfe:

Verwende VBA 6.5 in Excel .
Mein Makro soll zur Gänze in einer aktivierten Tabelle ablaufen, jedoch in verschiedenen Tabellen nacheinander angewandt werden können, wo neben anderem auch die Summierung einer Spalte durchzuführen ist. Das Problem ist, daß die Summierungbereiche stets unterschiedlich sind (zB. einmal b5 bis b20, in der nächsten Tabelle b5 bis b25, usw).
Mein Ansatz:
Dim anf As Range
Dim end As Range
.
.
.
Set anf = ActiveCell
.
.
.
Set end = ActiveCell
.
.
.
ActiveCell.Formula = „=Sum(anf:end)“

Wo liegt der Fehler? Fehlen nur irgendwo ein paar Gänsefüßchen? Geht es nur ganz anders und wie ?

Besten Dank im Voraus für Eure Bemühungen und
freundliche Grüße
wiedhalm

Hallo Experten!

Hallo Wiedhalm,

Als Hobby-Makroschreiber stehe ich wieder einmal vor einer
für mich zur großen Hürde und ersuche um Hilfe:

Verwende VBA 6.5 in Excel .
Mein Makro soll zur Gänze in einer aktivierten Tabelle
ablaufen, jedoch in verschiedenen Tabellen nacheinander
angewandt werden können, wo neben anderem auch die Summierung
einer Spalte durchzuführen ist. Das Problem ist, daß die
Summierungbereiche stets unterschiedlich sind (zB. einmal b5
bis b20, in der nächsten Tabelle b5 bis b25, usw).
Mein Ansatz:
Dim anf As Range
Dim end As Range

Das glaube ich dir nicht. end ist ein Schlüsselwort, das kannst du nicht als Variablennamen benutzen.

.
.
.
Set anf = ActiveCell

Was passiert denn hier dazwischen? Aktiverst du per Makro die letzte Zelle?
Falls nicht, ist anf und end gleich. Falls ja: Activate ist in Makros fast immer überflüssig.

.
.
.
Set end = ActiveCell
.
.
.
ActiveCell.Formula = „=Sum(anf:end)“

Gleiche Frage: Hast du die aktive Zelle vorher im Code verschoben?

Wo liegt der Fehler? Fehlen nur irgendwo ein paar
Gänsefüßchen? Geht es nur ganz anders und wie ?

Da ist einiges im Argen.
anf und end (was ja eigentlich nicht geht) sind Variablennamen. Wenn du die in eine Formel schreibst, weiß Excel damit nichts anzufangen, es sei denn, du hättest sie als Namen für Zellen in Excel definiert.

Vorschlag: Ich vermute ja, dass du, bevor du den Makro startest, die erste aktive Zelle von Hand auswählst. Dann könntest du doch auch gleich den gesamten Bereich selektieren, der summiert werden soll. Dann könnte der Makro so aussehen:

Sub summeBilden()
 Cells(Selection.End(xlDown).Row + 1, Selection.Column).Formula = "=SUM(" & Selection.Address & ")"
End Sub

Er schreibt die Summe unter die letzte ausgewählte Zelle

Besten Dank im Voraus für Eure Bemühungen und
freundliche Grüße
wiedhalm

Gruß,Andreas

Hallo Experten!

Ersuche um Entschuldigung!
In meiner schöpferischen Unordnung habe ich nun eine Lösung für mein Problem gefunden. Daher:

!!!PROBLEM GELÖST!!!

Freundliche Grüße
wiedhalm

Hallo Wiedhalm,

In meiner schöpferischen Unordnung habe ich nun eine Lösung
für mein Problem gefunden. Daher:

und wie hast du es gelöst?Wäre nett für Mitlesende wenn du das verraten/zeigen würdest.

Und die Angabe VBA 6.5 besagt nix.
Abgesehen davon daß es korrekt VB 6.5 lauten müßte, so
steht es in der Info im VB-Editor. Ganz genau so
Microsoft Visual Basic 6.5

Problem dabei ist, bei meinem Excel 2000 und bei Excel 2007
steht das gleiche, also …6.5
Ergo, laß das weg und sage die Excelversion.

Grundsätzlich wird (hier) davon ausgegangen daß es Excel für
Windows ist. Hast du einen Mac solltest du das dazu sagen.

PS: Dank dafür daß du überhaupt Feedback gibst, machen leider nicht
viele :frowning:

Gruß
Reinhard

Hallo Reinhard!

Zunächst meine Lösung. Es geht hier um die jährliche Summierung von div Autokosten, wobei das Problem ist, daß die Auflistung von Jahr zu Jahr ungleich lang ist. Hier exemplarisch die Treibstoffkosten:
.
.
Dim rngadiesel As Range
Dim rngediesel As Range
.
.
ActiveCell.Offset(-1, -2).Range(„A1“).Select
Set rngediesel = ActiveCell
Range(„c4“).Select
Set rngadiesel = ActiveCell
rngStart.Select
ActiveCell.Offset(0, -6).Range(„A1“).Select
ActiveCell.Formula = „=SUM(“ & rngediesel.Address(0, 0) & „:“ &_ rngadiesel.Address(0, 0) & „)“
.
.

Eine Kritik zu dieser Lösung („Select“) kann ich schon vorwegnehmen, aber ich habe gerne, wenn ich am Bildschirm den Ablauf beim Bau des Makros nachvollziehen kann und Rechenzeit spielt keine Rolle!

Zur VB-Bezeichnung: das ist ja hoch spezifisch; in Hinkunft werde ich einfach angeben in welchem Officeprogramm mein Makro laufen soll.

Freundliche Grüße
wiedhalm