2017-06-05 11 views
0

最後の金曜日の日付が最後にmm.dd.yyの形式であるファイルを参照しようとしています。正しい形式のVBAで日付形式を取得する

この日付をとり、文字列の最後に追加して、別のブックを開くために文字列を終了する必要があります。これは今私が持っているものです。

ファイル名: 提出書類Wkのこれは私が持っているものである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 

私は06.02.17の形式で入力してB2からそれを読んだとき、それしかし、私が何をしても、フォーマットをm/d/yyyyに変更するので、それをA1から読み取ることができません。私はそれをコピーして値として貼り付けようとしました。何も動作していないようです。

私はそれを実行しようとすると、ほかのブックも開いています。

アイデア?ありがとう!

+0

'そうすれば、VBAは文字列に変換してから再び変換する必要はありません)、' weekdate = Range( "a1")を使ってセル内でフォーマットされた値を読み取ることができます。 。 – YowE3K

答えて

0

UDFの下にしようと、任意の日付の前の金曜日を取得するには

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

を試してみてください。これは、Date NumberFormatがシステムの日付書式と同じであれば正常に動作します。キーはCDate()で、Officeアプリケーションのデフォルトとなるシステムの日付形式に変換されます。あなたは `wrbk =`(weekdate、「MM.DD.YY」)「提出書類エンディングWK」&フォーマット使用してそれを使用すると、日付をフォーマットすることができどちらか(私は日として、あなたは `weekdateを宣言推薦

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