Problema con excel

Buenos días.
Tengo una base de datos en una lista que voy rellenando diariamente. Me interesaría que al meter un nuevo registro, excel me pusiera la fecha en la que lo estoy haciendo en una casilla parte de la base de datos. He probado con la función hoy(), pero al abrir el archivo al día siguiente, dicha función se actualiza y me pone la fecha del día en que abro, no la fecha en que puse el registro. Esto quiero que lo haga automáticamente, es decir, que no tenga que copiar y pegar manualmente ni nada por el estilo.
Si no existe forma de hacer lo que quiero con una función, quisiera saber si es posible arrancar una macro desde una función, es decir, si la casilla cumple una condición, que arranque una macro.
Gracias
1

1 respuesta

Respuesta
1
Con una función no es posible hacer lo que quieres, las funciones devuelven valores, no hacen acciones, por lo tanto, tampoco pueden arrancar una macro, pero lo que quieres se puede hacer, prueba lo siguiente
A1 = Dato 1
B1 = Dato 2
C1 = Dato 3
D1 = Fecha
Estos son los encabezados que use, ahora, sigue estos pasos
Entra al Editor de Visual Basc (Alt + F11)
Dentro del Explorador de proyectos (se parece mucho al Explorador de Windows), da un doble click sobre la hoja donde tengas estos encabezados, en mi ejemplo dice Hoja1(Hoja1)
Del cuadro de lista desplegable, donde dice General, selecciona Worksheet te aparecerá algo así...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Del cuadro de lista desplegable, donde dice SelectionChange al aldo de donde decía Generla, selecciona Change para que te aparezca
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Completa este evento con el siguiente código, para que se vea así...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Pos As Integer
If Target.Count = 1 Then
If Target.Column >= 1 And Target.Column <= 3 Then
If Target.Column = 1 Then
Pos = 3
ElseIf Target.Column = 2 Then
Pos = 2
ElseIf Target.Column = 3 Then
Pos = 1
End If
If Target.Offset(0, Pos).Value = "" Then
Target.Offset(0, Pos).Value = Date
End If
End If
End If
End Sub
Este código, lo que hace es
Verifica que solo se este manipulando una celda
Verifica que esta celda sea de la columna 1 a la 3, que es donde tenemos los encabezados
Verifica que este vacía la celda donde va la fecha y si esta vacía le pone la fecha de hoy
Una respuesta maravillosa, gracias
A titulo personal, me gustaría mucho poder aprender mucho más sobre VB para excel, ¿me puedes recomendar algún manual/libro o página web?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas