我有一个代码,我想要多次运行但是现在除非我在数据表名称上做了一些更改,否则我只能运行一次。
我的代码:
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
Sheets("Sheet2").Select
Sheets("Sheet2").Name = "FilterData"
Range("A1").Select
Selection.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.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.AutoFilter
Columns("A:A").EntireColumn.AutoFit
Range("A2").Select
End Sub
在我执行之前,我手动创建了sheet2但是如果我想再次运行它,我不能因为我已经有“FilterData”工作表数据名称。
如何将代码修改为: 1.无需手动输入“sheet2”即可运行它。 2.不止一次运行它。 谢谢!
答案 0 :(得分:0)
在Excel中创建新工作表时,它将成为活动工作表,因此您可以使用activesheet
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
End With
.Columns("A:A").EntireColumn.AutoFit
.Range("A2").Select
End With
然后您可以手动重命名所有新工作表。
或者,如果你想循环设定的次数,你可以将整个事物包装在循环中并增加工作表名称:
For i = 1 to 4
Sheets.Add After:=ActiveSheet
With ActiveSheet
.Name = "FilterData " & i
*rest of the code here*
End With
Next i
这将创建4张名为FilterData 1,2,3等的表格,但如果你已经有一张名为那些东西的表格,这将再次引发错误。