Excel VBA列范围selectselect错误的列

我正在制作一个macros,它将在一个工作簿中的多个工作表上运行,在工作表之间切换,并将数据复制/粘贴到一个主工作表。

我的问题是,当我切换到另一个工作表使用Windows(索引).Activate ,然后尝试select一些列删除,它不会正确select列。 我正在使用下面的代码,EXACT相同的代码在主表单中工作得很好,但只要切换到VBA代码中的另一个表单并使用它,它将select从第1列开始到第数据。

下面的代码背后的想法是从第1列开始,search名为“综合评级”的列。 然后我想删除从第3列开始到综合评级列的所有列。

有人能告诉我我做错了什么吗? 非常感谢您的帮助!

For counter = 1 To 40 Step 1 Cells("1", counter).Select strval = ActiveCell.Value If strval = "Composite Rating" And counter <> 3 Then Range(Cells(1, 3), Cells(1, counter - 1)).EntireColumn.Select Selection.Delete Shift:=xlLeft Exit For End If Next counter 

编辑:对不起,应该提到我的设置。 我在Windows 7上使用Excel 2007.我已经尝试了xls和xlsx文件,结果相同。

尝试下面的代码:

  Dim rng As Range Set rng = Range("A1:Z1").Find("Composite Rating") If Not rng Is Nothing Then If rng.Column > 3 Then Range("C1", rng).EntireColumn.Delete End If End If 

Windows集合中的index属性在select其他窗口时发生更改 – >它是相对的!

改用Workbooks集合。