Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

¿Cómo manipular fechas y horas en VBA?

| Sin comentarios

Una macro que podría ser muy útil sería una que nos permita registrar la fecha y la hora a medida que vamos registrando un conjunto de datos. A continuación procederé a explicar los pasos que se deben hacer para lograr dicho objetivo.

Primero, se abre el Visual Basic, luego se puede abre un módulo o también se puede hacer doble clic en la hoja donde se planea utilizar la macros, como se observa la programación es la misma; sin embargo, la diferencia radica en que la primera solo se activa a la hoja especificada, y la segunda se puede aplicar en cualquier parte del documento. Para fines de este ejemplo usaremos la fórmula de arriba, para no estar ejecutando la macro cada vez que se ingrese un dato nuevo.

1) Private Sub Worksheet_Change(ByVal Target As Range)  , La línea 1)  es la macro que utilizaremos.

formula2

(Para mayor visualización de la imagen, hacer click en la misma)

Se escribe 2)"Dim FH as Intenger", para definir que nuestra variable FH tomará valores enteros.

Luego pones 3)"For  FH = 2 To 1000", para indicar que nuestra variable FH solo se activará a partir de la fila 2 hasta la número 1000 (uno puede escoger libremente si empieza desde el 1 hasta el número que uno desee) para este caso particular se puso 2 al comienzo, ya que la primera fila están los encabezados.

4) If Cells(FH, "A").Value <> "" And Cells(FH, "B").Value <> "" And Cells(FH, "C").Value = "" Then

5) Cells(FH, "C").Value = Date & " " & Time

Los código de arriba quiere decir que mientras que se escriban valores en las columnas A y B , en la columna C aparecerán la fecha y el hora en la que fueron registrados. Se coloca unas " " para dejar un espacio entre el día y la hora, no son necesarias. Adicionalmente, es necesario que en las columnas A y B exista algún dato, en caso contrario no se registrará la fecha y la hora en la columna C.

6) End If
7) Next
8) Range("C:C").EntireColumn.AutoFit

9) End sub

Se cierra el "If", y ponemos "Next" para indicar que el en toda la columna C, se llene automaticamente la fecha y la hora, lo cual es lo que estamos buscando.

A continuación realizare un ejemplo el cual nos muestra a la columna A con el código de un producto y la columna B con el nombre específico de dicho producto, esto es útil especialmente para las empresas que tienen que registrar la hora de llegada o salida de ciertos bienes, para tener un mejor control sobre ellos, esto también se podría utilizar para registrar la hora de llegada de personas a un evento, entre otros usos más

tabla3

(Para mayor visualización de la imagen, hacer click en la misma)

Como se puede observar en la tabla, cada producto tiene un determinado código el cual está registrado en la columna A, y en la B el nombre del producto, como ya se había mencionado antes, una vez se registre ambos datos, la fecha y la hora aparecerán automáticamente en la columna C. Como se mencionó este registro solo será factible si hay datos en ambas columnas, no saldrá la fecha tampoco si solo hay datos en la columna A y no en la B y viceversa. Adicionalmente, si se busca agregar más campos como, en 4) se debe hacer lo siguiente:

  • If Cells(FH, "A").Value <> "" And Cells(FH, "B").Value <> "" And Cells(FH, "C").Value <> ""And Cells(FH, "D").Value <> "" ....... And Cells(FH, "N").Value = "" Then

Donde A,B,C,D... son las celdas en las que se requiere llenar primero datos para que en la última columna (en este caso sería la "N") salga la fecha y la hora.

Para más información, revisar el siguiente ejemplo: FechayHora

 

Por: Carlos Enrique

Deja una respuesta

Los campos requeridos estan marcados con *.