Macro que permita elegir al usuario un rango diferente cada vez

Estoy creando una macro que me permita realizar una sería de procesos pero ay uno que no he podido, agradezco si me pueden ayudar.

Quiero realizar un subtotal a un rango (este rango nunca es el mismo, es relativo, puede ser d2:d5 cómo puede ser d80:d580, etc). He visto macros que mientras se ejecuta ella arroja un cuadro para que el usuario pueda seleccionar libremente el rango. Eso es lo que quiero saber cómo se hace.

Importante: es una hoja de Excel que está filtrada, no sé si eso sea relevante al momento del código, y dicha hoja es de un libro diferente.

Respuesta
1

Por supuesto que es relevante si existe un filtro, y que bueno que lo mencionaste, de esa forma te puedo dar un ejemplo.

La macro te permite seleccionar un rango de celdas.

Por default se posiciona en la celda D1 para iniciar la selección. Puedes seleccionar cualquier rango iniciando en cualquier celda y terminando en cualquier otra celda.

Sub sumar2()
'Por.Dante Amor
    On Error Resume Next
    With Application
        Set rango = .InputBox("Selecciona el rango a copiar", _
            Default:=Range("D1").Address, Type:=8)
        If rango Is Nothing Then Exit Sub
    End With
    For Each c In rango.SpecialCells(xlCellTypeVisible)
        tot = tot + c
    Next
    MsgBox "el total es : " & tot
End Sub

En el ejemplo, suma todos los valores seleccionados, pero que además sean visibles, es decir, si tienes un filtro, entonces solamente sumará los valores filtrados.

Al final, en la variable tot tienes la suma.

Es un ejemplo para que lo adaptes a lo que necesitas.


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda
.

¡Gracias! 

Me toco hacerle un par de modificaciones al código porque el msgbox no me indicaba el valor, y para el subtotal de la base filtrada lo logre sacar con otro código.

pero ese era la base de lo que necesitaba. Gracias

la parte que me funciono fue esta. 

On Error Resume Next
    With Application
        Set rango = .InputBox("Selecciona el rango a copiar", _
            Default:=Range("D1").Address, Type:=8)
        If rango Is Nothing Then Exit Sub
    End With

Gracias..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas