アプリ版:「スタンプのみでお礼する」機能のリリースについて

【エクセルVBA】年度が変わり不具合が出ます



こんばんは。
ご覧頂きありがとうございます。

エクセルで管理している仕入れ表があるのですが
締め日で取引先の月毎合計金額を算出したいのです。

シートを用意し、
A列には、2019/10/21〜11/20
と手入力し、
B、C・・・列には、取引先毎の商品納品日が上記期間に該当する合計金額
が算出されるVBAを書きました。

ですが、年度が2019から2020に変わり、
去年は合っていた金額が
今年、算出すると合わなくなってしまったのです・・・
何故でしょうか?

下記VBAです



Private Sub 算出_Click()

Dim intR As Integer
Dim intL As Integer
Dim intT As Integer
Dim objS As Worksheet
Dim objW(2) As Worksheet
Dim lngB As Long
Dim intD As Integer
Dim dteF As Date
Dim dteT As Date
Set objS = Sheets("合計")
Set objW(1) = Sheets("さまぁ〜ず大竹さん")
Set objW(2) = Sheets("さまぁ〜ず三村さん")
intR = 2
Do Until objS.Cells(intR, 1).Value = ""
intD = InStr(objS.Cells(intR, 1).Value, "~")
dteF = DateValue(Left(objS.Cells(intR, 1).Value, intD - 1))
dteT = DateValue(Right(objS.Cells(intR, 1).Value, Len(objS.Cells(intR, 1).Value) - intD))
For intT = 1 To 2
intL = 3
lngB = 0
Do Until objW(intT).Cells(intL, 1).Value = ""
If dteF <= objW(intT).Cells(intL, 17).Value And _
dteT >= objW(intT).Cells(intL, 17).Value Then
lngB = lngB + objW(intT).Cells(intL, 13).Value
End If
intL = intL + 1
Loop
objS.Cells(intR, intT + 1).Value = lngB
Next intT
intR = intR + 1
Loop
End Sub

A 回答 (2件)

A列に「2019/10/21〜11/20」と入力されているそうですが・・・。


人間であれば「2019/10/21〜2019/11/20」と解釈してくれますが、むぎさんが書いたVBAは、「2019/10/21〜2020/11/20」と解釈していると思います。
FROMと同様に、TOについても年を入力するようにすれば、問題なく動きそうですね。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。
納品日に加えて用意したシートも年度まで表示されるようにしました。

お礼日時:2020/01/14 23:30

コードの問題ではなく、データの入力された日付が2019年ではなく2020年になっていませんか?


月日だけ入力するとエクセルが勝手に今年の年を追加してしまいます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
納品日を確認したところ、月日のみでした。表示を年度まで増やしました。

お礼日時:2020/01/14 23:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!