Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Excel.Macros: Utilizando botones

Como que no solo de código vive el hombre, aprovecho esta serie de artículos para recordaros la existencia, en Excel, de botones. Si, tambien existen formularios, y muy pronto vamos a revisarlos, pero mientras tanto, un humilde boton nos puede hacer mucho bien…Disculpad el lenguaje, pero se ve que hoy me he levantado¿clasicon?.

Bueno, a lo nuestro, vamos a ver como podemos incorporar un botón a nuestra hoja de cálculo, y unirlo a una macro para darle un poco mas de dinamismo a nuestro trabajo.

Nuestro primer ejemplo, va a ser muy sencillo, tenemos una hoja con una tarifa de precios, y queremos poder incrementar o de crementar nuestros precios con solo pulsar un botón….

Primero nuestra hoja:

hoja de calculo con tarifa de precios

Por aquello de reservar energías para lo importante, se me ha ocurrido bajar una hoja desde internet; os dejo el enlace de la pagina por si quereis descargarla: http://www.bjc.es/lista-de-precios/ (no es publicidad; no tengo nada que ver con ellos, pero dejaron a mi alcance una hoja excel…)

Para organizar nuestro trabajo, le he asignado un nombre a nuestra columna de precio; lo hubiera podido hacer desde macro, pero como la intención es que si modifican la columna, el usuario modifique el nombre y todo siga funcionando, lo he hecho en la hoja; para ello, he hecho click en la celda C3, y a continuacion he pulsado Ctrl+Shift+Flecha abajo para seleccionar toda la columna de datos; luego me he posicionado en el cuadro de nombres , Excel. Cuadro de nombreshe escrito listaPrecios, pulso Intro y la columna de nombres pasa a llamarse listaPrecios

Se trata ahora de hacer una macro que nos pida cuanto queremos incrementar o decrementar nuestros precios. Para ello, podemos abrir nuestro editor de VBA y añadimos un módulo nuevo, o en thisworkbook y  escribimos :

Sub modificaPrecio()
    Dim variacion As Double

    variacion = InputBox("Indique variacion" & vbCrLf & " Ej: 1,10 +10%, 0,90 -10%")
    Application.ScreenUpdating = False
    Range("listaPrecios").Select
    For Each celda In Selection.Cells
        celda.Value = celda.Value * variacion
    Next
    Application.ScreenUpdating = True

End Sub

Como veis, no me he complicado la vida, defino una variable variacion como Double, presento un inputbox para que me indiquen el incremento o decremento, que para simplificar lo solicito ya como operador, a continuación, bloqueamos la actualización de pantalla para que la macro vaya un poco mas rápida, seleccionamos el rango definido por «listaPrecios» y vamos recorriendo todas las celdas, aplicando el factor a cada una de ellas, luego solo queda volver a activar la actualización de pantalla, y todo hecho.

 

Excel.Ficha programador.Boton insertar

Ahora ya podemos añadir el boton, para ello, en la ficha de programador pulsamos el botón Insertar  y

 

 

sobre el emergente, pulsamos botón,

Excel.boton

 

y solo queda irnos a la hoja, en donde queramos que aparezca el botón, y arrastrar el ratón para dibujarlo. Al finalizar nos aparecerá una nueva ventana emergente en donde nos solicitara asociarlo a una macro; seleccionamos la que acabamos de hacer, y resuelto.

Ah! en caso de que no se abriera la pantalla para indicar la macro, podéis hacer doble click en el botón, y automáticamente aparecerá el editor de VBA con el nombre de la rutina escrito, escribís dentro el nombre de vuestra macro, y apunto para probar

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 3.235.78.122
Proxy:
Remote host: ec2-3-235-78-122.compute-1.amazonaws.com
Remote port: 53676
** 3.235.78.122