Programar un botón en excel

Hola deseo saber como programar un botón para que realice la siguiente tarea al darle click:
1. Me llene una determinada celda con un valor. La celda a llenar dependerá de un valor previo que estoy colocando en otra celda determinada.
2.borre datos de la celda determinada donde estoy colocando los datos
3.En caso tal de que las características se repitan y se tenga que ingresar de nuevo el valor en la misma celda, que se sumen los valores.
Quedo muy atento muchas gracias

3 Respuestas

Respuesta

Puedes usar referencias hacia las celdas que deseas copiar desde - hacia, un ejemplo seria algo asi

Suponiendo que la celda A1 es tu celda de ingreso de datos: y A2 sea tu celda destino

Dim SRC As Integer
Dim DEST As Integer
SRC = Range("A1").Value
DEST = Range("A2").Value
Range("A2").Value = SRC + DEST
Range("A1").Value = ""

Respuesta
1

Parece que te di la dirección de la carpeta

Es el archivo LibroA

Hola.. muchas gracias esta muy bien.. Solo que
Necesito que la celda donde van los valores no sea siempre "C5" . Sino que vaya a una celda diferente dependiendo de algún valor que ingrese.
Por ejemplo--> si pongo 102 en una celda que el valor que yo ponga en "A1" vaya a la celda "C7" , si pongo 109, que el valor vaya a "C20" .. etc Te mando un video explicativo para que me puedas ayudar --> https://www.youtube.com/watch?v=0hc6-EJZWoE

Ya veo la idea

Perdona si me tardo un poco, porque me quedé sin agua y estoy tratando de arreglar el equipo hidroneumático

Pero en cuanto tenga algo, te aviso ...

Prueba ahora el nuevo (mismo modificado)

LibroA

Respuesta
1

Te paso un código que resuelve tu pedido.

Este código tendrías que colocarlo en el evento click del botón. El nombre del evento debe ser el mismo que el del botón. Yo he dejado el nombre que Excel le pone por defecto (CommandButton1), a fin de no complicar más las cosas.

Private Sub CommandButton1_Click()
Dim NuevoValor As Double
Dim TotalAcumulado As Double

NuevoValor = ActiveSheet.Range("A1").Value
TotalAcumulado = ActiveSheet.Range("A2").Value
TotalAcumulado = TotalAcumulado + NuevoValor
ActiveSheet.Range("A2").Value = TotalAcumulado
ActiveSheet.Range("A1").ClearContents
End Sub

No sé que nivel de conocimiento tienes sobre macros. Por las dudas te aclaro que, en este código, la celda donde se ingresan los valores nuevos es A1, y en A2 aparece el total acumulado. Solo basta con que cambies las referencias de estas celdas por las que tú elijas, para adaptaro a tus necesidades.

Cualquier duda me avisas.

Hola.. muchas gracias esta muy bien.. Solo que

Necesito que la celda donde van los valores no sea siempre "A2" . Sino que vaya a una celda diferente dependiendo de algún valor que ingrese.

Por ejemplo--> si pongo 102 en una celda que el valor que yo ponga en "A1" vaya a la celda "C7" , si pongo 109, que el valor vaya a "C20" .. etc Te mando un video explicativo para que me puedas ayudar --> https://www.youtube.com/watch?v=0hc6-EJZWoE

Acá te envío el código para los botones de entrada y salida. Las referencias de celdas coinciden con las del video. Como el código es muy similar para ambos botones, lo que se hace en evento click de cada botón es llamar a ese código y lo único que cambia es el dato de la columna que se pasa como argumento.

Private Sub entradas_Click()
movimientos (3)
End Sub

Private Sub salidas_Click()
movimientos (4)
End Sub

Private Sub movimientos(Columna As Integer)
Dim CodigoBuscado, CodigoListado As Integer
Dim z As Integer
Dim ValorEntrada, TotalAcumulado As Double

CodigoBuscado = ActiveSheet.Range("A2").Value
ValorEntrada = ActiveSheet.Cells(2, Columna + 2).Value
If CodigoBuscado <> 0 And ValorEntrada <> 0 Then
For z = 1 To 3000
CodigoListado = ActiveSheet.Cells(5 + z, 1).Value
If CodigoListado = CodigoBuscado Then
TotalAcumulado = ActiveSheet.Cells(5 + z, Columna).Value
TotalAcumulado = TotalAcumulado + ValorEntrada
ActiveSheet.Cells(5 + z, Columna).Value = TotalAcumulado
ActiveSheet.Range("A2:G2").ClearContents
Exit For
End If
Next z
Else
MsgBox ("Faltan datos por ingresar")
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas