Excel VBA Summen eines variablen Bereiches bilden

2 Antworten

Bei mir klappt es. In der Theorie hast du alles richtig gemacht. Mein Beispiel:

Sub SumBereich()
  Dim Bereich1 As Range
  Dim b, e, f
  b = 5: e = 1: f = 3
  Set Bereich1 = Tabelle1.Range("E" & e, "E" & f)
  Tabelle1.Range("E" & b + 11).Value = Application.WorksheetFunction.Sum(Bereich1)
End Sub

Was passiert den bei dir? Fehlermeldung?

Woher ich das weiß:Berufserfahrung – Programmierer

SamyMetal 
Beitragsersteller
 19.02.2015, 13:49

Bei mir wird nichts in die betroffene Zelle eingetragen, als ob ich die Funktion nie geschrieben hätte, ich probier mal deine.

Suboptimierer  19.02.2015, 13:51
@SamyMetal

Debugge mal oder ersetze b, e und f durch fixe Werte zum Testen. Schaue außerdem, ob die Excelfunktion, wenn du sie direkt ins Sheet einträgst, ein Ergebnis liefert.

SamyMetal 
Beitragsersteller
 19.02.2015, 13:53
@Suboptimierer

Habs grade mit fixen Werten gemacht, da hats funktioniert... Komisch, ich hoffe es klappt jetzt, und danke für die schnelle Hilfe!

Oubyi, UserMod Light  19.02.2015, 23:39
@Suboptimierer

Sorry, ich hatte diesen Thread nicht gesehen (ich meine auch gar nicht angezeigt bekommen), als ich meine Antwort geschrieben habe.

SamyMetal 
Beitragsersteller
 20.02.2015, 07:19
@Oubyi, UserMod Light
Dim Bereich1 As Range
Set Bereich1 = Sheets("Tabelle1").Range("E" & e & ":E" & f)
Tabelle1.Range("E" & b + 11).Value = Application.WorksheetFunction.Sum(Bereich1)

So sieht der Text aus, er funktioniert mit fixen zahlen, aber sobald ich die variablen verwende wird in die bestimmte Ausgabezelle ("E"&b+11) kein Wert angezeigt, auch steht keine Formel drin, hab ihr ne Erklärung dafür?

Suboptimierer  20.02.2015, 09:33
@SamyMetal

Dann debugge doch einfach. Setze einen Haltepunkt und schaue dir die Werte in e, f und b an. An viel mehr kann es nicht liegen, wenn die Summe über denselben Bereich gebildet wird.

Oubyi, UserMod Light  20.02.2015, 11:37
@SamyMetal

Du musst natürlich auch die zweite Referenz korrigieren.
Also auch Sheets("Tabelle1").Range:

Sheets("Tabelle1").Range("E" & b + 11).Value = Application.WorksheetFunction.Sum(Bereich1)   

Klappt es so?

Suboptimierer  21.02.2015, 11:44
@Oubyi, UserMod Light

Ich wusste auch nicht, dass man "Tabelle1." schreiben kann. In meinem Test ging das aber, falls du das meinst. Ich finde diese Variante sogar besser, da ich Objekte ungern als Zeichenkette anspreche.
Bei VBS ist mir dieses CreateObject("Scripting.FileSystemObject") ein Graus.

Ich gehe mal davon aus das e und f Integer Varaiablen sind.
Dann sollte es eigentlich so klappen:

Set Bereich1 = Sheets("Tabelle1").Range("E" & e & ":E" & f)

Oder?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)