Condición de una fecha

Olaa experto
Tengo este código
Deseo que si la fecha2 no c encuentra en la carpeta de donde tomo la información
mande un msgbox que me diga que no c encuentra la fecha... Es una macro de remplazosssss
fecha1 = InputBox("Fecha que desea sustituir?", "ORIGEN", Now())
If fecha1 = Empty Then Exit Sub
fecha2 = InputBox("Fecha nueva?", "DESTINO", Now())
If fecha2 = Empty Then Exit Sub }
Es el código que pide las fechas
Y este es donde remplaza
Selection.Replace What:="[BALANCE " & Format(fecha1, "ddmmyy"), Replacement:="[BALANCE " & Format(fecha2, "ddmmyy"), _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
Mi pregunta es
Que si la fecha 2...(por la cual voy a remplazar no c encuentra.. Que me dispare un mensaje de error o un msgbox de que la fecha por la cual deseo remplazar noc encuentra... Ya que si realiza la acción le aparece una ventana de windows donde dice actualizar y tengo que darle muchos cancelar y es tedioso
espero me puedas ayudar!
Gracias

3 Respuestas

Respuesta
1
Hay que comprobar si existe ese archivo, una de las formas de hacerlo es abrir ese excel, si da error al intentar abrirlo es que no existe y no debería seguir ejecutando tu código, dando una salida al programa que avisa al usuario que para es fecha no existen datos...
...sub comosellametumacro()
On Error GoTo ERRORES
...tucódigopidiendoycomprobando la fechas
'comprobar existencia del fichero
ruta= "K:\Subdireccion de Operacion\PROGRAMACION DE LA PRODUCCION\GPP\Reportes\MORELOS\REPORTE\"&format(fecha2;"MMMM") &"\MORELOS_" &format(fecha2"MMMM_yyyy_mm") &".xls"
workbooks.open ruta
'Workbooks(ruta).Close SaveChanges:=False ...opcional
...restodetucódigoqueejecutarásiexisteelarchivo y, al final, antes del endsub
ERRORES:
If Err.Number = 1004 Then
   MsgBox "no existe ese archivo"
   Exit Sub
   Else
   MsgBox Err.Number & "..." & Err.Description
End Sub
Respuesta
1
Con que introduzcan la cancelación de los errores será suficiente, después de poner los inputbox de búsqueda pones esta linea de código
On error resume next
Y ya no te dará los avisos para cancelar y si quieres que no te muestre avisos pues también pones esta linea
Application.DisplayAlerts = False
>Un saludo
>Julio
olaa experto
Muy buena respuesta, ya no me apareció las ventanas de actualización
hizo el remplazo pero puso puro REF REF
Lo que me encantaría
Es que en vez de realizar el remplazo
Si no c encuentra la fecha aparezca un msgbox de que no c encontró la fecha
Y no realize nada
Espero me puedas apoyar
Ya que lo tuve checando y no me sale
Gracias
Saludos cordiales
Pues para ello debes de poner la instrucción de que si no lo encuentra se vaya al final de la macro y te muestre un msgbox:
If fecha2 Is Nothing Then
Msgbox (" No encuentro esta fecha")
Exit Sub
End If
>Un saludo
>Julio
Respuesta
1
Puedes crear una variable tipo Boolean:
Dim Encuentra As Boolean, BuscarEnRango As Range, RangoABuscar As Range
Set BuscarEnRango = Hoja2   'Pones la hoja donde tienes que buscar
Set RangoABuscar= Intersect(BuscarEnRango.Columns("A"), BuscarEnRango.UsedRange)
Encuentra = False
If Fecha2 <> "" Then
For Each cell In RangoABuscar
If cell.Value = fecha2 Then
Tu_Código
Encuentra = True
Exit For
End If
Next cell
End If
If Not Encuentra Then
msg = "La fecha no se encontro en " & BuscarEnRango.Name & "."
MsgBox msg, vbOKOnly, "Buscar Fecha"
End If
Tienes que adaptarlo a tus necesidades.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas