为什么索引在对VBA宏应用更改后不刷新?

  • 本文关键字:刷新 应用 索引 VBA excel vba
  • 更新时间 :
  • 英文 :


当前代码的目的是向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时(在添加注释列之后应该是这样),过滤器应用于错误的列(右侧的列)。

这里有一个小的可复制的例子:

<表类>项ID类型tbody><<tr>A321_15000A3112_1232A321_1503

我认为你想过滤列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"))

如果您稍后更改代码,如果活动表更改,您是安全的。

顺便说一句:我想你的问题被否决了,因为它不是很清楚你在问什么-你的索引是什么意思?

最新更新