2017-06-05 142 views
0

我想以mm.dd.yy的形式引用前一個星期五的日期結尾的文件。以正確的格式獲取VBA中的日期格式

我需要現在採取該日期並將其添加到一個字符串的末尾,爲了打開一個字符串的結尾選擇其他工作簿。這就是我現在所擁有的。

文件名: 送件周結束06.02.17.xlsx

這是我迄今爲止

Dim wrbk As String 
Dim weekdate As String 

range("a1").value="=TODAY()-WEEKDAY(TODAY())-1" 
weekdate = Range("a1").Value  
'range("b1").value="06.02.17" 
'weekdate = Range("b1").Value 

msgbox weekdate 'use to check what the date format is 

wrbk = "Submittals Wk Ending " & weekdate 

Windows(wrbk & ".xlsx").Activate 

當我從B2與在17年2月6日的格式輸入閱讀它但無論我做什麼,我都無法從A1讀取它,因爲它會將格式更改爲m/d/yyyy。我試圖複製它並粘貼爲值。似乎沒有任何工作。

當我嘗試運行它時,我還打開了其他工作簿。

任何想法?謝謝!

+0

,你使用它使用'wrbk =「提交資料WK結束」和格式您既可以格式化日期(weekdate,「MM.DD.YY」)'(但我會建議你聲明'weekdate截止日期'如果你這樣做,以便VBA不必轉換爲一個字符串,然後再轉換回來),或者你可以使用'weekdate = Range(「a1」)在單元格中格式化它來讀取值。 。 – YowE3K

回答

0

嘗試

Range("A1").Value = Format$(Date - Weekday(Date) - 1, "MM.DD.YY") 
0

要在任何日期上週五,試試下面UDF。如果Date NumberFormat與您系統的日期格式相同,這應該可以正常工作。關鍵是CDate(),它根據Office應用默認的系統日期格式進行轉換。

Option Explicit 

Function GetLastFridayDate(AnyDate As Variant) As Date 
    Dim dInput As Date, dLastFriday As Date 
    dInput = CDate(AnyDate) 
    dLastFriday = dInput - Weekday(dInput) + vbFriday - IIf(Weekday(dInput) > vbFriday, 0, 7) 
    GetLastFridayDate = dLastFriday 
End Function