Ayuda para una modificación código
Mi pregunta es la siguiente...
El siguiente código que muestro lo utilizo para que me analice y convierta con los datos que hay en las tres primeras columnas A, B, C, de una base de datos que corresponden al día, mes y año, y que en la columna "G", me escriba el día de la
semana que corresponde, y que igualmente haga lo mismo con las columnas DE, E, F, y coloque el día de la semana en columna H.
El código funciona bien si completo todos los datos de las columnas A hasta la F, pero si falta algún dato el código se detiene y solo analiza los datos hasta la celda en blanco.
En la base de datos no siempre tengo que poner una fecha obligatorio, por lo que necesitaría que el código cuando encuentre una celda en blanco que continúe analizando datos hasta el último dato que normalmente estará en la columna A, que no necesariamente tiene que ser la 65536, puede ser la 20.000, con celdas en blanco en ocasiones posiblemente de 20 o 25 filas.
He intentado varias formas de hacerlo pero no me funciona. En resumen, necesito que me analice todas las filas utilizadas aunque no hayan escritas fechas en algunas de las columnas, ya que en el ejemplo no están todas las columnas que utilizaré.
Sub cmdMostrarDia_Click()
Dim strFecha As String 'Nombramos la variable tipo texto
Dim strFecha2 As String
fil = 2
UltimaFila = Range("A65536").End(xlUp).Row
'If UltimaFila > Range("D65536").End(xlUp).Row Then
' UltimaFila = Range("D65536").End(xlUp).Row
'End If
'Garantizamos que haya minimo una fila de datos
If UltimaFila > 10 Then
'Iteramos desde la fila 2 y hasta donde haya datos, no tiene
'caso recorrer TODAS las filas, solo las que tengan datos
Application.ScreenUpdating = False
For j = 2 To UltimaFila
dia1 = Cells(fil, 1)
mes1 = Cells(fil, 2)
Ano1 = Cells(fil, 3)
dia2 = Cells(fil, 4)
mes2 = Cells(fil, 5)
Ano2 = Cells(fil, 6)
strFecha = Trim(dia1) & "/" & Trim(mes1) & "/" & Trim(Ano1) 'le asignamos un valor
If Cells(fil, 4).Value = "" Then
Cells(fil, 13).Value = ""
Else
strFecha2 = Trim(dia2) & "/" & Trim(mes2) & "/" & Trim(Ano2)
If IsDate(strFecha) Then 'si la variable strFecha es una fecha entonces:
Cells(fil, 12).Value = Format(strFecha, "dddd")
Cells(fil, 13).Value = Format(strFecha2, "dddd")
fil = fil + 1
End If
End If
Next j
End If
End Sub
Muchas gracias, te remito el archivo a tu correo.
El siguiente código que muestro lo utilizo para que me analice y convierta con los datos que hay en las tres primeras columnas A, B, C, de una base de datos que corresponden al día, mes y año, y que en la columna "G", me escriba el día de la
semana que corresponde, y que igualmente haga lo mismo con las columnas DE, E, F, y coloque el día de la semana en columna H.
El código funciona bien si completo todos los datos de las columnas A hasta la F, pero si falta algún dato el código se detiene y solo analiza los datos hasta la celda en blanco.
En la base de datos no siempre tengo que poner una fecha obligatorio, por lo que necesitaría que el código cuando encuentre una celda en blanco que continúe analizando datos hasta el último dato que normalmente estará en la columna A, que no necesariamente tiene que ser la 65536, puede ser la 20.000, con celdas en blanco en ocasiones posiblemente de 20 o 25 filas.
He intentado varias formas de hacerlo pero no me funciona. En resumen, necesito que me analice todas las filas utilizadas aunque no hayan escritas fechas en algunas de las columnas, ya que en el ejemplo no están todas las columnas que utilizaré.
Sub cmdMostrarDia_Click()
Dim strFecha As String 'Nombramos la variable tipo texto
Dim strFecha2 As String
fil = 2
UltimaFila = Range("A65536").End(xlUp).Row
'If UltimaFila > Range("D65536").End(xlUp).Row Then
' UltimaFila = Range("D65536").End(xlUp).Row
'End If
'Garantizamos que haya minimo una fila de datos
If UltimaFila > 10 Then
'Iteramos desde la fila 2 y hasta donde haya datos, no tiene
'caso recorrer TODAS las filas, solo las que tengan datos
Application.ScreenUpdating = False
For j = 2 To UltimaFila
dia1 = Cells(fil, 1)
mes1 = Cells(fil, 2)
Ano1 = Cells(fil, 3)
dia2 = Cells(fil, 4)
mes2 = Cells(fil, 5)
Ano2 = Cells(fil, 6)
strFecha = Trim(dia1) & "/" & Trim(mes1) & "/" & Trim(Ano1) 'le asignamos un valor
If Cells(fil, 4).Value = "" Then
Cells(fil, 13).Value = ""
Else
strFecha2 = Trim(dia2) & "/" & Trim(mes2) & "/" & Trim(Ano2)
If IsDate(strFecha) Then 'si la variable strFecha es una fecha entonces:
Cells(fil, 12).Value = Format(strFecha, "dddd")
Cells(fil, 13).Value = Format(strFecha2, "dddd")
fil = fil + 1
End If
End If
Next j
End If
End Sub
Muchas gracias, te remito el archivo a tu correo.
1 Respuesta
Respuesta de valedor
1