2015-09-15 76 views
0

下面的我的VBA代碼決定給定日期是否爲工作日。當它不是工作日時,它將輸出前一天的日期。如何在.find()中格式化日期?

問題是,它似乎不尊重日期格式。例如,當搜索01/02/2015時,它看起來將日期定爲2015年2月1日。由於01/02/2015導致問題可能不是工作日,而02/01/2015可能是。

下面的代碼:

Function FechaHabil(Fecha As Date, Rango As Range) 

    'Rango is the set of non working dates 
    'Fecha is the desired date to find 

    Dim Flag As Integer 
    Dim FechaFinal As Date 

    FechaFinal = Format(Fecha, "dd/mm/yyyy") 
    Flag = 0 
    Do While Flag <> 1 
    Set Busca = Rango.Find(FechaFinal, LookIn:=xlValues) 
    If Not Busca Is Nothing Then 
     FechaFinal = DateAdd("d", -1, FechaFinal) 
     Flag = 0 
    Else 
     Flag = 1 
    End If 
    Loop 
    FechaHabil = FechaFinal 
+0

http://www.ozgrid.com/VBA/find-dates.htm –

+0

類似的問題已經在這裏討論 http://stackoverflow.com/a/30293508/4230409 – Vasily

+0

我試圖讓問題更加清楚 - 起初很難閱讀,但我已經更正了一些拼寫錯誤,並且很快就引入了關鍵問題。此外,我更改了代碼的白色間距 - 不確定是否正確,我不使用VBA,請隨時將其更改回來。 – jaunt

回答

0

使用本:

Application.FindFormat.NumberFormat = "dd/mm/yyyy"