我希望将Userform选项用于日期过滤器,用户将输入“开始时间”& “结束时间”和所有相关数据将根据此过滤器显示。
我使用本地宏来使用两个不同的单元格进行数据输入,但是文件视图很糟糕,这就是我想使用Useform选项的原因。
我的代码:
Public Sub MyFilter()
Dim lngStart As Date, lngEnd As Date
lngStart = Range("b2").Value 'assume this is the start date
lngEnd = Range("b3").Value 'assume this is the end date
Range("q:q").AutoFilter Field:=1, _
Criteria1:=">=" & lngStart, _
Operator:=xlAnd, _
Criteria2:="<=" & lngEnd
Range("A1:s3000").Select
Range("A:A").Activate
Selection.Copy
Sheets.Add After:=ActiveSheet
With ActiveSheet
.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.Columns("A:A").EntireColumn.AutoFit
.Cells.Select
.Cells.EntireColumn.AutoFit
.Rows("1:1").Select
.Application.CutCopyMode = False
With Selection
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.AutoFilter
Columns("Q:Q").Select
Selection.NumberFormat = "[$-409]m/d/yy h:mm AM/PM;@"
End With
.Columns("A:A").EntireColumn.AutoFit
.Range("A2").Select
End With
End Sub
代码还将数据复制到新工作表(任何想法如何将其复制到新文件?)并更改了一些单元格格式。
谢谢!
答案 0 :(得分:0)
要将粘贴缓冲区复制到新文件,请添加新文件(而不是工作表):
Set fNew = = Workbooks.Add(xlWBATWorksheet)
...
fNew.SaveAs Filename:=<file specification>
Paste:=xlPasteValues
字面上复制值,没有任何格式,注释,边框等。要保留源格式,只需使用ActiveSheet.Paste Destination:=Range("A1")
即可。如果 - 由于任何原因 - 它不起作用,你可以试试这个:
.Range("A1").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
仅复制已过滤的行,请使用:
Range("A1:S3000").SpecialCells(xlCellTypeVisible).Copy
fNew.Sheets(1).Range("A1").PasteSpecial