当前代码的目的是向excel工作表添加注释列,然后使用自动过滤器过滤数据所需的项目id和类型。当我添加评论列时,我希望我的表中列的索引应该改变,但是,它不知道为什么会发生这种情况?
Option Explicit
Sub ValidateEdgeCases()
' Enter Column called Comments
Range("A:A").Insert
Range("A1").Value = "Comment"
Range("A1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
'Filter by ItemID blanks and types blanks and 0
ActiveSheet.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:="="
ActiveSheet.Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:="=0", _
Operator:=xlOr, Criteria2:="="
End Sub
注释代码的目的是为失踪的项目添加一个列和过滤id和缺失或0类型。上面的代码可以工作,但是当我将字段更改为2和3时(在添加注释列之后应该是这样),过滤器应用于错误的列(右侧的列)。
这里有一个小的可复制的例子:
我认为你想过滤列B-在插入新列A "comment":
之后'Filter by ItemID blanks and types blanks and 0
ActiveSheet.Range("B1").CurrentRegion.AutoFilter Field:=1, Criteria1:="="
ActiveSheet.Range("B1").CurrentRegion.AutoFilter Field:=2, Criteria1:="=0", _
Operator:=xlOr, Criteria2:="="
尽量避免隐式范围引用(Range("A:A")) -而总是使用显式引用(worksheet.range(…))。
我会避免引用活动表。使用设置为工作表的变量(如dim wsEdgeCases as worksheet: set wsEdgeCases = activeworkbook.worksheets("EdgeCases")
)
如果您稍后更改代码,如果活动表更改,您是安全的。
顺便说一句:我想你的问题被否决了,因为它不是很清楚你在问什么-你的索引是什么意思?