返回列表 上一主題 發帖

拿取日期

回復 1# mdr0465


資料表日期格式為:yyyy/m/d
怎又用 dd/mm/yy 去篩選??? 違反常規日期的輸入方法, 洋人的???

TOP

加個防呆:
Sub Daily_Sales()
Dim Qs$, QQ, R&, DateFmt$, xArea As Range
ReTry:
Qs = InputBox("請輸入要查詢的日期" & Chr(10) & Chr(10) & "輸入規則:DD/MM/YY")
If Qs = "" Then Exit Sub
QQ = Split(Qs & "//", "/")
Qs = 20 & QQ(2) & "/" & QQ(1) & "/" & QQ(0)
If IsDate(Qs) = False Then MsgBox "日期輸入錯誤, 請重新輸入! ": GoTo ReTry
QQ = DateValue(Qs)
'---------------------------------------------
Application.ScreenUpdating = False
Sheets("DAILY SALES").UsedRange.Offset(1, 0).EntireRow.Delete
Set xArea = Range([GROUPING!K1], [GROUPING!A1].Cells(Rows.Count, 1).End(xlUp))
With xArea
     .AutoFilter Field:=2, Criteria1:=QQ
     .Offset(1, 0).Copy Sheets("DAILY SALES").[A2]
     .Parent.ShowAllData
End With
With Sheets("DAILY SALES").UsedRange
     R = .Cells(.Rows.Count + 1, 2).End(xlUp).Row
     If R = 1 Then MsgBox "找不到符合日期的資料! ": Exit Sub
     .Columns(2).NumberFormatLocal = "dd/mm/yy"
     .EntireColumn.AutoFit
End With
End Sub

注意:============================
DD = DateSerial(2020, 13, 35) '月份超過12, 日期超過31
MsgBox DD '一樣會被視為日期

DD = DateSerial(2019, 2, 29) '2019.2月沒有29日
MsgBox DD '=2019/3/1


===============================

TOP

回復 8# mdr0465


If Qs = "" Then Exit Sub
QQ = Split(Qs & "//", "/")
Qs = 20 & QQ(2) & "/" & QQ(1) & "/" & QQ(0)
If IsDate(Qs) = False Then MsgBox "日期輸入錯誤, 重新輸入! ": GoTo ReTry
QQ = DateSerial(QQ(2), QQ(1), QQ(0))

可能是電腦系統日期格式設定不同吧!
我這一定是測過了ok才會確認的,
那還是改用dateserial看看,
反正前面已判斷過日期的正確性,
這dateserial就是一個正確日期~~

TOP

本帖最後由 准提部林 於 2020-8-23 17:12 編輯

回復 10# mdr0465

資料表顯示情形:


執行結果:


xls格式檔:
Xl0000358.rar (61.61 KB)

真的不行, 還是用龍大的吧!

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題