excel 如何修复运行时错误13类型不匹配

wwwo4jvm  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(372)

我有一个代码,以过滤数据之间2日期此代码每次尝试运行给我一个消息运行时错误13类型不匹配
此代码在工作表中,而不是模块中

Sub BetweenDates()    '(Filter data between 2 dates )
Dim sDate As Long
Dim EDate As Long

sDate = Range("B4").Value
EDate = Range("D4").Value

Range("c7:c80").AutoFilter 3, ">=" & sDate, xlAnd, "<=" & EDate
End Sub
vhmi4jdf

vhmi4jdf1#

如果范围B4或D4不是日期,我可以重现此错误。
你可能在这些单元格中有文本或其他内容。
在单元格B4和D4中,确保数字格式为“常规”或“日期”,然后再次输入日期。
编辑:
使用文本框会使它变得更复杂,所以考虑一下是否可以使用单元格。但是如果你真的需要使用文本框:
而不是

sDate = Range("B4").Value
EDate = Range("D4").Value

您将需要用途:

sDate = DateValue(ActiveSheet.Shapes("TextBox 1").TextFrame.Characters.Text)
EDate = DateValue(ActiveSheet.Shapes("TextBox 2").TextFrame.Characters.Text)

您需要将“TextBox 1”,“TextBox 2”替换为您的文本框名称。
如果您不知道文本框的名称,可以使用以下命令:

Sub list_shapes()

Dim sh As Shape

For Each sh In ActiveSheet.Shapes
    Debug.Print sh.Name, DateValue(sh.TextFrame.Characters.Text)
Next sh

End Sub

请记住,只有当用户在文本框中输入完整的日期时,上述方法才有效。如果他们输入“1-Jul-23”,它会起作用,但如果他们输入“1-Jul”,它将不起作用。
只有当用户在运行宏时激活了工作表时,上述操作才有效。

相关问题