Excel 运行autofilter VBA宏,该宏有一个弹出窗口来输入日期

Excel 运行autofilter VBA宏,该宏有一个弹出窗口来输入日期,excel,vba,button,user-input,userform,Excel,Vba,Button,User Input,Userform,我对VBA/Excel宏有点陌生,所以我正在尽我最大的努力找到我需要的解决方案,到目前为止我做得很好,但最终进入了死胡同 我有一个代码,可以自动过滤我的数据表,然后根据特定的列进行排序(见下文) 子报表() ActiveWorkbook.Worksheets(“排序报告FG”).ListObjects(“Table25”).Range.AutoFilter字段:=2,Criteria1:=“1085” ActiveWorkbook.Worksheets(“排序报告FG”).ListObjects

我对VBA/Excel宏有点陌生,所以我正在尽我最大的努力找到我需要的解决方案,到目前为止我做得很好,但最终进入了死胡同

我有一个代码,可以自动过滤我的数据表,然后根据特定的列进行排序(见下文)

子报表()
ActiveWorkbook.Worksheets(“排序报告FG”).ListObjects(“Table25”).Range.AutoFilter字段:=2,Criteria1:=“1085”
ActiveWorkbook.Worksheets(“排序报告FG”).ListObjects(“Table25”).Range.AutoFilter字段:=4,Criteria1:=“$0”

ActiveWorkbook.Worksheets(“排序报告FG”).ListObjects(“Table25”).Range.AutoFilter字段:=6,Criteria1:=“最初我建议使用一个输入框,并检查输入是否有效:

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是一个非常脆弱的函数,但如果您认为合适,您可以继续使此代码更华丽。

欢迎使用Stack Overflow!下次添加代码段时,突出显示所有代码并按键盘上的Ctrl+K以正确格式化。干杯!是什么使
IsDate
脆弱?@neepnneep会这样做吗完全绕过对用户表单的需要?或者这是与用户表单绑定的代码?@IREVEL type
InputBox“test”
+在即时窗格中输入(Ctrl+G),您将足够快地回答该问题。(扰流板:完全限定的名称是
VBA.Interaction.InputBox
,即与
MsgBox
函数相同的模块-是的,它完全替换了您的用户表单…尽管用户表单还有其他优点,例如,您可以嵌入验证并主动防止用户使用无效输入确定模式对话框)谢谢你们两位的帮助。在运行任何自动筛选/排序之前,我最终合并了“InputBox”。让它填充到隐藏表中的特定单元格中,然后将该单元格引用为在主Sub中进行排序的日期。工作非常出色。再次感谢!@MathieuGuindon IsDate是出了名的允许性,将允许相当多的时间无论您的地区设置如何,如“2018年12月31日”、“2018年12月31日”等,都可以使用任何格式。也就是说,它是有效闰年日期的最终仲裁者
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