Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sum_Visible_Cells ohne Function

Sum_Visible_Cells ohne Function
31.05.2009 19:23:23
Ben

Hallo und frohe Pfingsten,
ich würde gern in einer Tabelle in welcher dynamisch per Makro Spalten ausgeblendet werden die Summe in einer Zeile bilden ohne die ausgeblendeten Spalten und benutze dafür folgende Function:
Function Sum_Visible_Cells(Cells_To_Sum As Object) Application.Volatile For Each Cell In Cells_To_Sum If Cell.Columns.Hidden = False Then If IsNumeric(Cell.Value) Then Total = Total + Cell.Value End If End If Next Sum_Visible_Cells = Total End Function


Diese Funktion in einem Modul führt allerdings in Verbindung mit einem anderen Makro welches sich in einem Worksheet befindet zu einem einfrieren von Excel, daher würde ich gern wissen ob man es umschreiben kann, dass die Summe direkt in einer Zelle ausgegeben wird per VBA?
Danke,
Ben

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
z.B. Range("A1")=Total ? owT
31.05.2009 19:32:43
robert
TEILERGEBNIS ?
31.05.2009 19:33:41
Josef
Hallo Ben,
warum verwendest du nicht TEILERGEBNIS()?
Tabelle1

 ABC
11 14
21  
31  
41  
51  
111  
121  
131  
141  
151  
161  
171  
181  
191  
20   

Formeln der Tabelle
ZelleFormel
C1=TEILERGEBNIS(109;A1:A19)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Sepp

Anzeige
AW: Sum_Visible_Cells ohne Function
31.05.2009 21:16:41
Ben
Ich denke Teilergebnis funktioniert nur beim ausblenden durch einen Filter und es funktioniert auch nicht mit Versionen vor 2007.
Range(a1) ist etwas zu einfach...
dachte da eher an

Sub Worksheet_Activate()
Dim Cell As Variant
Dim Total As Integer
Dim LetzteSpalte As Integer
Application.Volatile
For i = 10 To 49
For Each Cell In Cells_To_Sum
If Cell.Columns.Hidden = False Then
If IsNumeric(Cell.Value) Then
Total = Total + Cell.Value
End If
End If
Next
Cells(i, LetzteSpalte) = Total
Next i
End Sub


Um das ganze noch schwieriger zu machen soll die Summe in der letzten Spalte von Zeile 10 bis 49 gebildet werden... (in einem anderen Code steht die Ermittelung der LetztenSpalte, es ist eine globale Variable)
Mir ist klar das jetzt ein Objectfehler auftritt, weiß aber nicht wie ich den umgehen kann.

Anzeige
AW: Sum_Visible_Cells ohne Function
31.05.2009 21:17:25
Ben
Ich denke Teilergebnis funktioniert nur beim ausblenden durch einen Filter und es funktioniert auch nicht mit Versionen vor 2007.
Range(a1) ist etwas zu einfach...
dachte da eher an

Sub Worksheet_Activate()
Dim Cell As Variant
Dim Total As Integer
Dim LetzteSpalte As Integer
Application.Volatile
For i = 10 To 49
For Each Cell In Cells_To_Sum
If Cell.Columns.Hidden = False Then
If IsNumeric(Cell.Value) Then
Total = Total + Cell.Value
End If
End If
Next
Cells(i, LetzteSpalte) = Total
Next i
End Sub


Um das ganze noch schwieriger zu machen soll die Summe in der letzten Spalte von Zeile 10 bis 49 gebildet werden... (in einem anderen Code steht die Ermittelung der LetztenSpalte, es ist eine globale Variable)
Mir ist klar das jetzt ein Objectfehler auftritt, weiß aber nicht wie ich den umgehen kann.

Anzeige
AW: Sum_Visible_Cells ohne Function
31.05.2009 22:12:06
Josef
Hallo Ben,
Teilergebnis funktioniert auch bei manuell ausgeblendeten Spalten und das auch bei Version 2003.
Allerdings habe ich überlesen, das du ja Spalten ausblenden willst.
Dein Code ist einfach gesagt nonsense, was soll z.B. das Application.Volatile dort?
Wozu dient die erste Schleife?
Gruß Sepp

AW: Sum_Visible_Cells ohne Function
31.05.2009 22:21:35
Ben
Da muss ich zugeben dass ich das im Internet so gefunden habe und der code "alleine" auch läuft.
Die erste Schleife dient dazu das in den Zeilen 10 bis 49 in der letzen Spalte das Ergebnis Total ausgegeben werden soll.
Anzeige
AW: Sum_Visible_Cells ohne Function
31.05.2009 22:21:59
Ben
Da muss ich zugeben dass ich das im Internet so gefunden habe und der code "alleine" auch läuft.
Die erste Schleife dient dazu das in den Zeilen 10 bis 49 in der letzen Spalte das Ergebnis Total ausgegeben werden soll.
AW: Sum_Visible_Cells ohne Function
31.05.2009 22:41:28
Josef
Hallo Ben,
so?
Sub Worksheet_Activate()
  Dim rng As Range
  Dim dblResult As Double
  Dim lngIndex As Long
  
  
  For lngIndex = 10 To 49
    For Each rng In Range(Cells(lngIndex, 1), Cells(lngIndex, LetzteSpalte - 1))
      If Not rng.EntireColumn.Hidden Then
        If IsNumeric(rng) Then
          dblResult = dblResult + rng
        End If
      End If
    Next
    Cells(lngIndex, LetzteSpalte) = dblResult
    dblResult = 0
  Next
  
End Sub

Gruß Sepp

Anzeige
AW: Sum_Visible_Cells ohne Function
31.05.2009 23:20:40
Ben
Danke das ist es! Super!
Nur eine Frage noch, wenn Zahlen eingefügt werden in die Spalten aktualisiert sich die Summe nicht, wegen dem workbook.activate nehm ich an.
Application.Calculate nach dem letzten Next sollte helfen oder?
Antwort zu einfach-Ok, aber...
01.06.2009 11:16:33
robert
..deine frage war ja auch einfach gestellt.
...wie kann ich eine summe eintragen?...
hinterher kommen immer dann die echten probleme-warum nicht gleich?
gruß
robert
AW: Sum_Visible_Cells ohne Function
01.06.2009 14:03:53
Josef
Hallo Ben,
Private Sub Worksheet_Calculate()
  Dim rng As Range
  
  On Error GoTo ErrExit
  Application.EnableEvents = False
  
  Set rng = Range(Cells(10, 1), Cells(10, LetzteSpalte - 1))
  Range(Cells(10, LetzteSpalte), Cells(49, LetzteSpalte)).Formula = _
    "=SUM(" & rng.SpecialCells(xlCellTypeVisible).Address(0, 0) & ")"
  
  ErrExit:
  Application.EnableEvents = True
End Sub


dann musst du nur nach dem Ein/Ausblenden von Spalten F9 drücken.
Gruß Sepp

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige