Suma de Columnas por VBA

Tome de tus respuestas este código el cual suma varias columnas en hoja de calculo y lo quise adaptar a mi hoja de calculo, pero algo he hecho mal, que al correr el programa me da error, me dice que no coinciden los tipos de datos.
Quiero aclarar que los encabezados de mi hoja de calculo están el rango A4 : L4
Y el rango total es A4: L300
Quiero que sume a partir de la columna C3
Sub sumandocol()
'estos datos deberás ajustar segun tu tabla
Range("C5").Select
col = 3
ultfila = Range("C5").End(xlDown).Row
ultcol = Range("C5").End(xlToRight).Column
'hasta aquí
While ActiveCell.Column <= ultcol
While ActiveCell.Row <= ultfila
tot1 = tot1 + ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend
ActiveCell.Offset(1, 0).Select
Cells(ultfila + 2, col).Value = tot1
tot1 = 0
col = col + 1
Cells(2, col).Select
Wend
End Sub
Aparentemente toma el encabezado y como es alfanumérico, ahí es donde se detiene el programa
Igualmente me gustaría me indicaras como puedo Que un Current Región se extienda más lineas hacia abajo y lo tome como área de impresión
Por la atención que prestes a mi correo mil

1 Respuesta

Respuesta
1
Disculpa la demora pero ayer no se podía entrar al sitio:
El problema está en la última instrucción que dice Cells(2, col). Select cuando en realidad debe decir Cells(5,col). Select
Todo esto es para sumar a partir de C5.
Mencionas que quieres sumar desde C3 pero si tu rango de títulos va de la A4 interpreto que será desde la fila 5, col 1
Si es así, además de reemplazar en todas las instrucciones esa dirección (A5), en la que dice: col = 3 será col = 1
Para la segunda consulta, te desarrollé esta macro que quiero que la pruebes a ver si es lo que interpreto que necesitas:
Sub area()
Dim nrocol As Integer, nrofila As Integer
Dim ultima As String
'la región se establece a partir de A3
Range("A3").CurrentRegion.Select
'cuenta el total de col y filas de la región
nrocol = Selection.Columns.Count
nrofila = Selection.Rows.Count
'agrega al rango 5 filas y 3 col, este dato no se si lo fijarás o lo solicitarás con un Inputbox
Selection.Resize(nrofila + 5, nrocol + 3).Select
'esta nueva región se establece como área de impresión
ActiveSheet.PageSetup.PrintArea = Selection.Address
End Sub
Esperando tus comentarios te saluda
He recibido tu respuesta con gusto y como bien dices tengo un error en el rango de tabla, he probado tu sugerencia funciona a la perfección.
En cuanto a la segunda segunda es exactamente lo pretendía y funciona de maravilla.
Créeme que este código, me va ser de gran utilidad mil gracias.
Recibe mis saludos y un fuerte abrazo desde Guadalajara Jal. Mex.
Jose Medina Maciel

Añade tu respuesta

Haz clic para o