|
時間的に、一番最後のやつを使ってください。
少なくとも、1番最初のやつは上手く行きませんから。(元の日付が1/31の場合など)
Sub test()
Dim dt1 As Date
Dim dt2 As Date
dt1 = Cells(1, 1).Value
dt2 = dt1
If Day(dt1) > 20 Then
dt2 = DateSerial(Year(dt1), Month(dt1) + 1, Day(dt1))
dt2 = DateSerial(Year(dt2), Month(dt2) + CLng(Day(dt1) <> Day(dt2)), Day(dt2))
End If
MsgBox "明細表" & Format(dt2, "e-mm") & "月分\明細表" & Format(dt2, "mm") & "-" & Format(dt1, "dd")
End Sub
かみちゃん さんもおっしゃってますが
一番最初の
>12月21日には、「明細表17−01月分」のフォルダーに「明細表01-21」のファイルに仕上げたい
と
>2005/1/21と入れてマクロをすると「明細票16−2月分¥明細票02−21」になります
>→何とか「・・・¥明細票01−21」と出したいのですが・・・
では、内容が違います。
後者でよいですね?
つまり、12/21 は「明細票17-01月分」フォルダに「明細票12-21」のファイルが作成される。
これであれば
MsgBox "明細表" & Format(dt2, "e-mm") & "月分\明細表" & Format(dt1, "mm") & "-" & Format(dt1, "dd")
にしてください。
フォルダを作成する方は↓のような感じでどうですか?
Sub Auto_Open()
' 自動発生(20日を過ぎた時点で翌月分ホルダー作成)
Dim str As String
Dim dt As Date
Const PFol As String = "U:\AA\"
'20日を過ぎていたら1ヶ月加算
If Day(Date) > 20 Then
dt = DateAdd("m", 1, Date)
Else
dt = Date
End If
str = PFol & "明細表" & Format(dt, "e-mm") & "月分"
If Dir(str, vbDirectory) = "" Then
MkDir str
MsgBox " 「こんにちは」 新しい月が始まりました !" & vbLf & _
" 当月のフォルダー" & vbLf & Replace(str, PFol, "") & "を作成しました !" _
, vbOKOnly + vbInformation
End If
End Sub
|
|