Me dio mucho que pensar tu pregunta. Finalmente logré llegar a una respuesta con reducidas líneas de código.
El código que te envío contiene un procedimiento para sumar módulo a módulo y otro para sumar todos los módulos, con la condición de que siempre estén separados por una única línea. Según el código siempre debes estar posicionado en una celda con contenido "debe" para poder lanzar los procedimientos.
Te dejo el código de ambos procedimientos a continuación, y al final de la respuesta un link para bajar el archivo donde desarrollé la respuesta ( el formato del archivo es excel 2007 habilitado para macros)
Sub Sumamodulo()
Dim poscar As Integer
Dim verificacelda As Integer
Dim startsumrow As Integer
Dim finishsumrow As Integer
If ActiveCell.Value = "Debe" Then
ActiveCell.Offset(1, 0).Select
poscar = InStr(2, ActiveCell.Address, "$")
startsumrow = Right(ActiveCell.Address, Len(ActiveCell.Address) - poscar)
verificacelda = 0
Do Until verificacelda = 2
If Val(ActiveCell.Value) = 0 Then
verificacelda = verificacelda + 1
ActiveCell.Offset(0, 3).Select
If Val(ActiveCell.Value) = 0 Then
ActiveCell.Offset(1, -3).Select
verificacelda = verificacelda + 1
Else
ActiveCell.Offset(1, -3).Select
verificacelda = 0
End If
Else
ActiveCell.Offset(1, 0).Select
verificacelda = 0
End If
Loop
ActiveCell.Offset(-2, 0).Select
poscar = InStr(2, ActiveCell.Address, "$")
finishsumrow = Right(ActiveCell.Address, Len(ActiveCell.Address) - poscar)
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = "=sum(A" & startsumrow & ":A" & finishsumrow & ")"
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "=sum(d" & startsumrow & ":d" & finishsumrow & ")"
MsgBox "Módulo sumado", 0 + 48 + 0, "Libro Contable"
Else
MsgBox "Debe posicionarse en la celda 'debe' de cada módulo", 0 + 48 + 0, "Libro Contable"
End If
End Sub
Sub Sumaglobal()
If ActiveCell.Value = "Debe" Then
Do While ActiveCell.Value = "Debe"
Call Sumamodulo
ActiveCell.Offset(1, -3).Select
Loop
MsgBox "Todos los módulos han sido sumados", 0 + 48 + 0, "Libro Contable"
Else
MsgBox "Debe posicionarse en la celda 'debe' de cada módulo", 0 + 48 + 0, "Libro Contable"
End If
End Sub
PD: Ambos deben estar en el mismo módulo de VBA.
Link del archivo :
http://www.megaupload.com/?d=ML4TJEP5Recuerda valorar la respuesta y cerrar la pregunta.