VB 6.5 für Excel: Bereichsumme bilden

Hallo Experten!

So hat es sich der kleine Hobby-Programmierer vorgestellt:

Dim anfang As Range
Dim ende As Range

-es wird die Anfangszelle des Rechenbereiches angesteuert und aktiviert, dann

Set anfang = ActiveCell

-es wird die Endzelle des Rechenbereiches angesteuert und aktiviert, dann

Set ende = ActiveCell

damit sollten einzeilige oder einspaltige, mehrzellige Tabellenbereiche festgelegt werden in welchen sich Zahlen befinden und mit

ActiveCell.Formula ="„sum(„anfang:ende“)“"

sollte in eine andere ActiveCell derselben Tabelle die Summe des Bereiches anfang:ende ausgegeben werden.

Funktioniert natürlich nicht! Ersuche die Experten um Hilfstellung und danke im Voraus.

freundliche Grüße
wiedhalm

Hallo Wiedhalm,

ein VBler kann mit VB6.5 nix anfangen, denn Vb wurde nach/bei Vb 6.0 eingestellt von MS.
Ich weiß natürlich daß 6.5 angezeigt wird wenn du da in Excel im Editor auf Hilfe oder ? o.ä. klickst.
Aber das besagt nix.
Gib die Excelversion an, das ist aussagekräftiger.

Funktioniert natürlich nicht! Ersuche die Experten um
Hilfstellung und danke im Voraus.

hmmh, bei „eine andere ActiveCell derselben Tabelle“ sehe ich die
Notwendigkeit mal darüber zu reden was denn ActiveCell ist und warum es da auf einem Blatt nie mehrere davon geben kann.

Also zeige bitte vorhandenen Code und erklär ggfs. nochmals was du da eigentlcih willst.

Gruß
Reinhard

Grüezi Wiedhalm

sollte in eine andere ActiveCell derselben Tabelle die Summe
des Bereiches anfang:ende ausgegeben werden.

Ein erster Ansatz könnte so aussehen - die einzelnen Zellen könnten auch per Abfrage und Selektierung festgelegt werden, das ist dann Quasi ‚Kosmetik‘:

Public Sub tr\_Formel()
Dim rngStart As Range
Dim rngEnde As Range

 Set rngStart = Range("A1")
 Set rngEnde = Range("F2")

 Range("A5").Formula = "=SUM(" & rngStart.Address(0, 0) & ":" & rngEnde.Address(0, 0) & ")"

End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo und Grüezi !

Zunächst ein herzliches Danke für die prompten Ratschläge.

Zur Sache und Thomas Ramel. Thomas hat mit seinem Mustercode genau das übermittelt, was ich brauche und zwischenzeitlich auch in mein Makro eingebaut habe. Funktioniert 100%ig, daher nochmals besten Dank.

Zu Reinhard: Werde mich bessern und künftige Anfragen in die richtige Lade legen. Zu ActiveCell: das mit mehreren ActiveCells ist ein Missverständnis. Wie es jetzt läuft, dank der Hilfe von Thomas zeigt der nachfolgende TestCode, der voll funktioniert:

Sub Makro2()

Dim rngStart As Range
Dim rngEnde As Range

Set rngStart = ActiveCell
ActiveCell.Offset(2, 0).Select
Set rngEnde = ActiveCell
ActiveCell.Offset(1, 1).Select
ActiveCell.Formula = „=SUM(“ & rngStart.Address(0, 0) & „:“ & rngEnde.Address(0, 0) & „)“

End Sub

Dies bedeutet: !!! PROBLEM GELÖST !!!

Liebe Grüße
wiedhalm

Wie es jetzt läuft, dank
der Hilfe von Thomas zeigt der nachfolgende TestCode, der voll
funktioniert:

Hallo Wiedhalm,

vermeide bitte Select. Nachfolgend mal vier Varianten.

Gruß
Reinhard

Sub Makro3()
Dim rngBereich As Range
Set rngBereich = Range(ActiveCell, ActiveCell.Offset(2, 0))
rngBereich.Offset(3, 1).Resize(1, 1).Formula = "=SUM(" & rngBereich.Address(0, 0) & ")"
End Sub

Sub Makro4()
ActiveCell.Offset(3, 1).Formula = "=SUM(" & Range(ActiveCell, ActiveCell.Offset(2, 0)).Address(0, 0) & ")"
End Sub

Sub Makro5()
Dim rngStart As Range
Dim rngEnde As Range
Set rngStart = ActiveCell
Set rngEnde = rngStart.Offset(2, 0)
rngEnde.Offset(1, 1).Formula = "=SUM(" & rngStart.Address(0, 0) & ":" & rngEnde.Address(0, 0) & ")"
End Sub

Sub Makro6()
ActiveCell.Offset(3, 1).Value = Application.Sum(Range(ActiveCell, ActiveCell.Offset(2, 0)))
End Sub

vermeide bitte Select. Nachfolgend mal vier Varianten.

Hallo Reinhard!

Bin zwar nur ein kleiner Möchtegern-Programmierer, doch neugierig bin ich trotzdem. Ich habe das „Select“ in vielen kleinen Makros angewandt und nie Probleme damit gehabt. Was ist das Schlimme an „Select“. Wenn geht, bitte die Antwort in einfacher Sprache für einen interessierten Laien.
Liebe Grüße
wiedhalm

vermeide bitte Select. Nachfolgend mal vier Varianten.

Ich habe das „Select“ in vielen
kleinen Makros angewandt und nie Probleme damit gehabt. Was
ist das Schlimme an „Select“. Wenn geht, bitte die Antwort in
einfacher Sprache für einen interessierten Laien.

Hallo Wiedhalm,

Select ist zu 99,9% entbehrlich, das dazu gehörige Active genauso.
Es wird also nicht wie manch andere Sache in Vba von Vbaerfahrenen Anwendern unterschiedlich gehandhabt.
Alle sind sich einig daß man das nicht benutzt.

Select macht den Code langsam, schau z.B. mal hier:
http://www.online-excel.de/excel/singsel_vba.php?f=61
Denn Select zwingt Excel dazu da von Blatt zu Blatt, von Zelle zu Zelle zu hüpfen, wofür, warum, absolut unnötig.

Es macht den Code unübersichtlich =schwer zu lesen.
Wenn man da Codesequenzen sieht, so 20 Codezeilen und dadrin geht es munter zu mit Worksheets(1).activate, activeCell.select u.ä.
dann ist man gezwungen um zu verstehen welche „ActiveCell“ in Codezeile 20 gemeint ist, den ganzen Schrott davor Step by Step nachzuvollziehen wo da grad hingehüpft wurde.

Du sagst ja, du willst Vba erlernen, dann lerne es bitte gleich richtig.
Denn logischerweise wirst du wenn du dich weiter mit Vba beschäftigst auch längere Codes fabrizieren.

Und wenn du dann sagen wir mal 1 Stunde einen Fehler im Code suchst weil er unerwarteter Weise an sich funktioniern müßte, aber das nicht macht und dann nach der langen zeit darauf kommst daß du
oben im Code geschrieben hast
letzte=5
aber viel weiter unten im Code geschrieben hast
If letze = 5 then
was ja nie einteten kann, so bist du danach sehr empfänglich für den Hinweis den dir alle Vbaerfahrenen geben, benutze immer Option Explicit.
Dann kann sowas gar nicht passieren.

Damit du Option Explicit nicht immer manuell eintippseln mußt, gehe in die Optionen des VB-Editors und setz das Häkchen bei Variablendeklaration erforderlich.
Das gilt dann für alle neuen Codes von dir.

Es ist schon klar daß wenn du da bislang nur so 3-8 Zeiler geschrieben hast dir die Problematik mit Select noch nicht so klar wurde.

Vielleicht wissen andere kundige Mitleser noch andere Gründe die gegen Select sprechen.
Frag hier ruhig nach wenn dir was an meinem beitrag oder in dem gezeigten Link unklar ist.

Gruß
Reinhard

Du sagst ja, du willst Vba erlernen, dann lerne es bitte
gleich richtig.
Denn logischerweise wirst du wenn du dich weiter mit Vba
beschäftigst auch längere Codes fabrizieren.

Hallo Reinhard!

Du gibst dir richtig Mühe, aus mir einen richtigen Vbaler zu machen. Dafür gebührt dir der ganz große Orden in Sachen Uneigennützigkeit und Hilfsbereitschaft. Ich hoffe für dich, daß dieser tägliche Einsatz auf fruchtbaren Boden fällt und so dazu beiträgt, wenigstens die interessierten Menschen, ein Stück voran zu bringen. In diesem Sinne nochmals ein herzliches Danke für die Informationen und viel Erfolg in der Zukunft wünscht dir
wiedhalm

PS: Mit 71 Jahren werde ich wahrscheinlich nicht mehr die ganz langen Codes schreiben…
aw