Sumar rango y resultado en otra celda

Respuesta de
a
Usuario
Buenas a todos, quisiera saber si me pueden ayudar con dos problemas que tengo:
1. Quisiera sumar un rango de celdas y que el resultado se ubique al costado izquierdo y arriba del rango, que este macro este creado en el menu y no como combinación de teclas. Obviamente los rangos no son fijos, sino que con solo sombrear y dar click en el icono y se realice la suma.
2. Establecer bordes personalizados, a un rango, es decir, sombrear para establecer el rango, dar click en el icono y se coloquen los bordes ya definidos, obviamente el rango va ha ser siempre variable.
Muchas gracias por la ayuda y/o comentarios
catc65
PD: Para los bordes utilizo los siguientes atajos, pero resulta tedioso ya que son bastantes sumas y bordes que hacer.
Atajo Ctrl+1
Alt+S Aplique o quite el Borde Superior
Alt+F Aplique o quite el Borde InFerior
Alt+Z Aplique o quite el Borde IZquierdo
Alt+D Aplique o quite el Borde Derecho
Alt+L Aplique o quite el Borde diagonal hacia abajo
Alt+A Aplique o quite el Borde diagonal hacia arriba
Alt+E Elejir estilo de borde
Alt+O Aplique o quite COontorno
Alt+C Aplique Color al borde
Alt+N Quitar todos los bordes (Ninguno)
Avatar
Experto
Hola, vamos a ir por partes:
Con el primer código obtendríamos el valor de la suma de las celds seleccionadas
'---------------------------------------
Sub sumaymarca()
   mirango = Replace(Selection.Address, "$", "")
   total = 0
   For Each mi In Selection
      total = total + mi
   Next
   For Each mi In Selection
      Marca = mi.Offset(0, -1).Select
      Exit For
   Next
   Selection = total
   Marcaperimetro (mirango)
End Sub
'-----------------------------------
con el otro codigo nos marcaría el perimetro de lo seleccionado
'-----------------------------------
Sub Marcaperimetro(rango As String)
    p = rango
    Range(rango).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Avatar
Experto
Para realizar el botón que ejecute el código hay que proceder de la siguiente manera:
1.- Pincha en la barra de iconos con el ratón derecho y selecciona PERSONALIZAR
2.- Selecciona la pestaña BARRAS DE HERRAMIENTAS, pincha en el botón NUEVA
3.- Dale el nombre que creas oportuno y te habrá creado una nueva barra de herramientas.
4.- Ahora vuelve a la pestaña COMANDOS y arrastra un botón cualquiera a la nueva barra de herramientas.
5.- Pincha con el ratón derecho en el nuevo botón y por ejemplo puedes cambiar la imagen del botón, el nombre, y otros aspectos, pero el que nos importa es ASIGNAR MACRO y en el cuadro que nos sale seleccionamos SUMAYMARCA (que es como le he llamado a la macro. Ahora aceptas y cierras personalizar los iconos.
Y si todo lo hemos echo bien, al pinchar en el icono, nos marca el valor de la suma y remarca el rango.
Detecto que siempre tendrás una columna a la izquierda del rango y que si la celda esta ocupada, ten en cuenta que pierdes el dato. Se le puedn poner condiciones, etc...
Saludos
Usuario
Excelente amigo, lo ejecute, asigne un icono y ya lo estoy utilizando.
Los bordes los necesitaba separados, pero ya dividí el código y también resulta.
Muchas gracias Experto!
catc65