簡體   English   中英

運行帶有彈出窗口以輸入日期的自動篩選器VBA宏

[英]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這樣做是最合適的(下圖)

img1

我只是不知道如何提示用戶窗體出現在代碼的那一行中,並通過輸入日期,單擊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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM