VBAで対象となる月の数を出す方法を教えて下さい。
2009.12.21~2010.1.20と入力された場合、結果2
2009.4.1~2009.4.30と入力された場合、結果1
のように対象となる(足かけ月数)月数を出す方法を知りたいのです。
下記コードのように変数A、BにVariant型で入力してもらい(Variant型でないと困る理由があるので)
それをDate型に変換したり、またVariant型に戻したり(必要があり)しながら、myOpenFileNamesにMypath & MyFileを順次追加すべく進めたいのですが、Mcntを出せずにいます。
Month(B)-Month(A)では12月と1月で不具合が出るし‥
期間が3か月以上の場合もあります。
なにかシンプルなのがありそうなので半日調べたのですが解りませんでした。皆様、お助け下さいませ。
ここまで省略
'●請求対象期間の入力
A = Application.InputBox("請求対象期間(開始日)を入力してください。", "開始日", "2009.12.21", Type:=2)
If A = False Then
MsgBox " Cancel ボタンが押されました"
Exit Sub
End If
On Error GoTo OWARI3
A = CDate(Replace(A, ".", "/"))
On Error GoTo 0
B = Application.InputBox("請求対象期間(締め日)を入力してください。", "締め日", Replace(Format(DateAdd("d", -1, DateAdd("m", 1, A)), "yyyy/mm/dd"), "/", "."), Type:=2)
If B = False Then
GoTo OWARI
End If
On Error GoTo OWARI3
B = CDate(Replace(B, ".", "/"))
On Error GoTo 0
If A > B Then
MsgBox A & "~" & B & " は請求日と締め日が逆転してます。", vbOKOnly + vbCritical, "最初からやり直して下さい。"
GoTo OWARI
End If
D = B - A
msgRec = MsgBox(A & "~" & B & "分でよろしいですか?", vbOKCancel + vbQuestion, "対象は" & D + 1 & "日分です")
If msgRec = vbCancel Then
MsgBox " Cancel ボタンが押されました"
Exit Sub
End If
Mcnt = ●○○○● ←ここを出す方法を知りたいのです。********************************
ReDim BN(1 To Mcnt)
For i = 1 To Mcnt
BN(i) = Replace(Format(DateAdd("m", i - 1, A), "yyyy/mm"), "/", ".")
Mypath = ThisWorkbook.Path & "\明細書一覧" & BN(i) & "月"
MyFile = "\明細書一覧" & BN(i) & "月.xls"
myOpenFileNames.Add (Mypath & MyFile)
Next i
以下略
お礼
あ、できました。 どうもありがとうございました。