Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen addieren mit VBA

Zellen addieren mit VBA
02.05.2009 16:33:29
Bernhard
Hallo,
ich möchte ein Diagramm erstellen in dem ich die Entwicklung (auf oder ab) eines Projekts im laufe der Zeit sehe und muss dafür die Werte der Spalte E zusammen zählen.
Ich hätte die Werte gerne in einem anderen Tabellenblatt ausgegeben.
Ich hatte das bisher mit der Formel in B5 zb "=B4+Daten!E12" in B6 "=B5+Daten!E13" ganz normal in Excel.
Ich hätte dies jetzt gerne in einem VBA-Code der auch erkennt, bis zu welchem Wert die Zellen in Spalte B ausgefüllt sind.
Mein bisheriger Code ist folgender:

Sub DiagrammErstellen()
Dim intz As Integer
Dim wert As Single
Worksheets("Daten").Activate
intz = 11
With Sheets("Daten")
Do Until .Cells(intz, 5).Value = ""
wert = wert + 1
Worksheets("Diagramm").Cells(i - 7, 2).Value = "wert"
Loop
End With
End Sub


Bei dieser Zeile wird mir ein Laufzeitfehler 1004 angezeigt.
Worksheets("Diagramm").Cells(i - 7, 2).Value = "wert"
Was muss ich ändern?
Danke schon im voraus für eure Hilfe!
Bernhard

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen addieren mit VBA
02.05.2009 17:25:56
chris
Hallo habe mir deinen Code nicht weiter angeschaut.
Aber der Fehler ist hier versteckt:
Worksheets("Diagramm").Cells(i - 7, 2).Value = "wert"
Du übergibst so einen String.
Aber du willst ja die Daten übergeben die in der Variable wert stehen.
Das machst du so:
Worksheets("Diagramm").Cells(i - 7, 2).Value = wert
gruß Chris
Anzeige
AW: Zellen addieren mit VBA
02.05.2009 18:12:56
Bernhard
das geht leider auch ohne Anführungszeichen nicht. Aber trotzdem danke
AW: Zellen addieren mit VBA
02.05.2009 18:47:28
hary
Hallo Bernhard
liegt's evtl. an der Variabelen i
Ist nicht deklariert
Gruss Hary
AW: Zellen addieren mit VBA
03.05.2009 01:17:13
Bernhard
Hallo Hary,
danke erst mal!
habs jetzt mal so versucht: (i wurde zu intz und muss so nicht mehr extra definiert werden)

Sub DiagrammErstellen()
Dim intz As Integer
Dim wert As String
Worksheets("Daten").Activate
intz = 11
With Sheets("Daten")
Do Until .Cells(intz, 5).Value = ""
wert = wert + 1
Worksheets("Diagramm").Cells(intz - 7, 2).Value = wert
Loop
End With
End Sub


Bei wert = wert + 1 wird mir jetzt Laufzeitfehler 13 "Typen unverträglich" angezeigt.
was mache ich noch falsch?

Anzeige
AW: Zellen addieren mit VBA
03.05.2009 10:05:47
chris
Hallo Bernhard,
mach doch
Dim wert As integer
gruß Chris
AW: Zellen zählen mit VBA
03.05.2009 11:32:28
Gerd
Hallo Bernhard,
eine schleifenlose Alternative.

Sub Nummern()
Dim ct As Long
ct = Range(ThisWorkbook.Worksheets("Daten").Cells(11, 5), ThisWorkbook.Worksheets("Daten"). _
Cells(11, 5).End(xlDown)).Count
With ThisWorkbook.Worksheets("Diagramm")
.Cells(2, 2).Value = 1
.Cells(2, 2).AutoFill (.Cells(2, 2).Resize(ct)), xlFillSeries
End With
End Sub


Gruß Gerd

Anzeige
AW: Zellen zählen mit VBA
03.05.2009 16:19:18
Bernhard
Hallo Chris,
das klappt leider auch nicht ganz, hier werden alle Werte in der selben Zelle zusammengezählt.
Ich hätte gerne einen Verlauf.
@Gerd: mit deinem Code fülle ich zwar alle Zellen aus, aber in der Folge 1,2,3,4,5 usw. und nicht mit meinen Werten...
was muss ich bei den Formeln ändern?
Danke für eure Hilfe!
Bernhard
Anzeige
AW: Zellen zählen mit VBA
03.05.2009 16:39:54
Gerd
Hallo Bernhard,
ich hatte es so aufgenommen, dass die Variable Wert von 0 jeweils um 1 hochgezählt wird, solange
die Zellen ab E11 abwärts im Blatt "Daten" gefüllt sind.
Was benötigst Du stattdessen? Die Werte aus den Zellen E11 abwärts?
Gruß Gerd
AW: Zellen zählen mit VBA
03.05.2009 18:01:11
Bernhard
ich würde gerne die Zellen E11, E12, E13, E14 aus Sheet "Daten" usw. bis zur letzten gefüllten Zelle addieren und im Sheet "Diagramm" ausgeben.
in B2 steht dann der Wert "E11"
in B3 "E11+E12 " bzw. "B2 + E12"
in B4 "E11+ E12 + E13" bzw. "B3 + E13"
in B5 "E11+ E12 + E13 + E14" bzw. "B4 + E14"
usw.
Danke schon mal für deine Hilfe!
Anzeige
AW: Zellen zählen mit VBA
03.05.2009 20:07:01
Gerd
Hallo Bernhard,
da kömme ich um eine Schleife nicht herum. Vielleicht hat einer eine rein mathematische Lösung?

Sub Kummulierte_Werte_übernehmen()
Dim Bereich As Range, varAuswahl As Variant, arrKummuliertDbl() As Double
Dim dblZSumme As Double, ct As Long
With ThisWorkbook.Worksheets("Daten")
Set Bereich = .Range(.Cells(11, 5), .Cells(11, 5).End(xlDown))
End With
varAuswahl = Bereich.Value
ReDim arrKummuliertDbl(1 To Bereich.Count)
For ct = 1 To Bereich.Count
arrKummuliertDbl(ct) = CDbl(varAuswahl(ct, 1)) + dblZSumme
dblZSumme = arrKummuliertDbl(ct)
Next
ThisWorkbook.Worksheets("Diagramm").Cells(2, 2). _
Resize(UBound(arrKummuliertDbl)) = Application.Transpose(arrKummuliertDbl)
End Sub


Gruß Gerd

Anzeige
AW: Zellen zählen mit VBA
03.05.2009 23:12:54
Bernhard
So funktioniert es auf alle Fälle super!
Vielen Dank!
AW: Zellen zählen mit VBA
03.05.2009 20:35:45
Josef
Hallo Bernhard,
brauchst du die Daten für ein Diagramm, dann kannst du das auch ohne Werte in der Tabelle
über einen Namen lösen, den du dann dem Diagramm direkt als Datenquelle zuweisen kannst.
Beispielformel für den Namen:

=TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(Tabelle1!$E$11;;;ZEILE(INDIREKT("1:"&ANZAHL(Tabelle1!$E$11:$ _
E$50)));))


Gruß Sepp

Anzeige
AW: Zellen zählen mit VBA
03.05.2009 23:14:50
Bernhard
Danke auch dir Sepp!
;
Anzeige
Anzeige

Infobox / Tutorial

Zellen addieren mit VBA – Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" und wähle Einfügen > Modul.
  2. VBA-Code einfügen:

    • Kopiere den folgenden Code und füge ihn in das Modul ein:
    Sub Kummulierte_Werte_übernehmen()
       Dim Bereich As Range, varAuswahl As Variant, arrKummuliertDbl() As Double
       Dim dblZSumme As Double, ct As Long
       With ThisWorkbook.Worksheets("Daten")
           Set Bereich = .Range(.Cells(11, 5), .Cells(11, 5).End(xlDown))
       End With
       varAuswahl = Bereich.Value
       ReDim arrKummuliertDbl(1 To Bereich.Count)
       For ct = 1 To Bereich.Count
           arrKummuliertDbl(ct) = CDbl(varAuswahl(ct, 1)) + dblZSumme
           dblZSumme = arrKummuliertDbl(ct)
       Next
       ThisWorkbook.Worksheets("Diagramm").Cells(2, 2). _
       Resize(UBound(arrKummuliertDbl)) = Application.Transpose(arrKummuliertDbl)
    End Sub
  3. Anpassen des Codes:

    • Stelle sicher, dass die Arbeitsblätter "Daten" und "Diagramm" in deiner Arbeitsmappe existieren.
  4. Code ausführen:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle Kummulierte_Werte_übernehmen und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004:

    • Ursache: Das Ziel-Worksheet "Diagramm" ist möglicherweise nicht vorhanden. Überprüfe, ob der Name exakt übereinstimmt.
  • Typen unverträglich (Laufzeitfehler 13):

    • Ursache: Achte darauf, dass die Variable wert als Double deklariert ist, nicht als String.
  • Werte werden in der gleichen Zelle addiert:

    • Lösung: Achte darauf, dass du den Code für die kumulierte Addition korrekt implementierst, um die Werte in aufeinanderfolgende Zellen zu schreiben.

Alternative Methoden

Eine schlingenlose Alternative zur Verwendung von VBA ist die Nutzung von Excel-Formeln:

=SUMME(E11:E12)

Diese Formel kannst du in die Zellen im "Diagramm"-Sheet einfügen. Für einen kumulierten Wert kannst du die Formel wie folgt anpassen:

=B2 + Daten!E13

Dabei wird die vorhergehende Zelle referenziert.


Praktische Beispiele

Hier sind einige Beispiele, wie du VBA zum Addieren von Zellen verwenden kannst:

  1. Einfaches Addieren:

    Sub Einfaches_Addieren()
       Dim Summe As Double
       Summe = Application.WorksheetFunction.Sum(ThisWorkbook.Worksheets("Daten").Range("E11:E20"))
       MsgBox "Die Summe ist: " & Summe
    End Sub
  2. Kumulierte Addition mit Ausgabe:

    • Nutze den vorherigen Code, um die kumulierten Werte für ein Diagramm zu erstellen.

Tipps für Profis

  • Verwende Option Explicit: Am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um Laufzeitfehler elegant zu handhaben:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich die kumulierte Addition in einer bestimmten Zelle starten? Du kannst die Zeilen im Code anpassen, um die Startzelle für die Ausgabe zu ändern.

2. Was mache ich, wenn ich mehr Daten habe als erwartet? Vergewissere dich, dass der Bereich in deinem VBA-Code korrekt definiert ist. Nutze .End(xlDown) um sicherzustellen, dass du bis zur letzten gefüllten Zelle in der Spalte E gehst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige