[英]Running autofilter VBA macro that has a pop up to enter date
我對整個VBA / Excel Macros有點陌生,所以我正在盡力找到所需的解決方案,到目前為止,我做得很好-但最終陷入了困境。
我有一個代碼,該代碼自動過濾我的數據表,然后對特定列進行排序(請參閱下文)。
Sub FGReport()
ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Range.AutoFilter Field:=2, Criteria1:= "1085"
ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Range.AutoFilter Field:=4, Criteria1:= "<>$0"
ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Range.AutoFilter Field:=6, Criteria1:= "<1/1/2018", Operator:=xlAnd
'ActiveWorkbook.Worksheets("Sorted Report FG").Range("Table25[[#Headers],[LastSoldDate]]").Select
ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Sort. SortFields.Clear
ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Sort. SortFields.Add2 Key:=Range("Table25[LastSoldDate]"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Sort. SortFields.Add2 Key:=Range("Table25[TotalInventoryValue]"), SortOn:= xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sorted Report FG").ListObjects("Table25").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
代碼在其中自動過濾日期(第4行)。 我希望它提示用戶手動輸入日期。 我認為用UserForm這樣做是最合適的(下圖)
我只是不知道如何提示用戶窗體出現在代碼的那一行中,並通過輸入日期,單擊Enter,然后繼續運行原始的FGReport()宏使其起作用。
讓我知道是否需要更多信息! 謝謝!
最初,我會建議一個輸入框並檢查輸入是否有效:
Dim myDate as String
myDate = InputBox("Please enter a date (dd/mm/yyyy)", "Date filter", Format(Now() - 7, "dd/mm/yyyy"))
If IsDate(myDate) Then
' Continue with logic
Else
MsgBox "Invalid date"
End If
請注意,IsDate是一個非常脆弱的函數,但是如果您認為合適的話,可以繼續使該代碼更奇特。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.