Vba 检查DT选择器结果,将工作表复制到新工作簿中

Vba 检查DT选择器结果,将工作表复制到新工作簿中,vba,excel,Vba,Excel,我的VBA技能不是最好的,如果有人能在以下方面提供帮助,那就太好了 我的工作簿中有许多工作表,其中的日期记录在单元格范围E11:E37中 我正在尝试创建一个报告函数,用户通过该函数完成日期选取器userform,Excel将在此工作簿中所有工作表的上述范围内搜索介于DTPicker1/2结果之间的日期 对于返回匹配的工作表,请将所有这些工作表复制到名为(“name¤t Date”.xlsx)的新工作簿中 更新:我尝试了反转>和尝试这个,看看它是否能让你更接近你的目标 Private

我的VBA技能不是最好的,如果有人能在以下方面提供帮助,那就太好了

我的工作簿中有许多工作表,其中的日期记录在单元格范围E11:E37中

我正在尝试创建一个报告函数,用户通过该函数完成日期选取器userform,Excel将在此工作簿中所有工作表的上述范围内搜索介于DTPicker1/2结果之间的日期

对于返回匹配的工作表,请将所有这些工作表复制到名为(“name¤t Date”.xlsx)的新工作簿中


更新:我尝试了反转>和尝试这个,看看它是否能让你更接近你的目标

Private Sub CommandButton1_Click()
    Dim s As Worksheet, wb as workbook

    For Each s In workSheets
        If cbool(application.countifs(s.Range("I11:I37"), ">" & cdate(DTPicker1.Value), _
                                      s.Range("I11:I37"), "<" & cdate(DTPicker2.Value))) then
            if wb is nothing then
                s.copy
                set wb = activeworkbook
            else
                s.copy after:=wb.worksheets(wb.worksheets.count)
            end if
        end if
    next s

    if wb is nothing then
        MsgBox ("No Records Found")
    else
        wb.SaveAs Filename:="Technicians - Batch Record Report" & Format(Date, "ddmmyyyy"), _
              FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End If
End Sub
Private子命令按钮1\u单击()
Dim s作为工作表,wb作为工作簿
对于工作表中的每个s
如果cbool(application.countifs(s.Range(“I11:I37”),“>”&cdate(DTPicker1.Value)_

s、 Range(“I11:I37”),“表单是什么样子的?问题出在哪里?您尝试过什么?如果您硬编码日期,其他一切都正常吗?@ashleedawg…对此感到抱歉!我在ine:If Range(“I11:I37”)>DTPicker1.值和范围(“I11:I37”)上遇到错误匹配
我可以使用硬编码日期,将其包含在文档中。Having完成了这项工作并修改了代码以查看新范围(E11:E37)。我仍然得到“无结果”…必须是您的数据和/或DTPicker1/2。这对我来说适用于硬编码日期。有没有可能我可以与您共享它?只需将dtpicker从代码中删除,并引用带有硬编码日期但仍然没有结果的工作表单元格,即可将其添加到树中?
Private Sub CommandButton1_Click()
    Dim s As Worksheet, wb as workbook

    For Each s In workSheets
        If cbool(application.countifs(s.Range("I11:I37"), ">" & cdate(DTPicker1.Value), _
                                      s.Range("I11:I37"), "<" & cdate(DTPicker2.Value))) then
            if wb is nothing then
                s.copy
                set wb = activeworkbook
            else
                s.copy after:=wb.worksheets(wb.worksheets.count)
            end if
        end if
    next s

    if wb is nothing then
        MsgBox ("No Records Found")
    else
        wb.SaveAs Filename:="Technicians - Batch Record Report" & Format(Date, "ddmmyyyy"), _
              FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End If
End Sub