我的VBA技能并不是最好的,如果有人可以帮助以下那些会很棒。
我在工作簿中有许多工作表,其日期记录在单元格范围E11:E37中。
我正在尝试创建一个报表功能,用户可以通过该功能完成日期选择器用户表单,Excel会在此工作簿的所有工作表中对上述范围运行搜索,以查看DTPicker1 / 2结果之间的日期。 / p>
对于返回匹配项的工作表,请将所有这些工作表复制到名称为("名称和当前日期" .xlsx)的新工作簿。
更新:我尝试撤消>和<,没有变化,认为我用Date包裹了DTPicker值没有结果,两者都没有,没有结果....
更新:代码现在正在工作,但不会返回值true,其中日期范围= 01/06/18 - 14/06/18,其中DTP1 = 07/06/18,DTP2 = 16/06/18。但是,如果DTP1 = 04/06/18且DTP2 = 08/06/18,则返回true。
Private Sub CommandButton1_Click()
Dim s As Worksheet, wb As Workbook
For Each s In Worksheets
If CBool(Application.CountIfs(s.Range("E11:E37"), ">" &
CDate(DTPicker1.Value), _
s.Range("E11:E37"), "<" &
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
答案 0 :(得分:0)
尝试这样做,看看它是否让你更接近目标。
.Quit