我正在处理一个宏,该宏将在一个工作簿中的多个工作表上运行,在工作表之间切换以及将数据复制/粘贴到一个主工作表。
我的问题是,当我使用 Windows(索引).Activate 切换到另一个工作表,然后尝试选择要删除的某些列时,它不会正确选择列。我正在使用下面的代码,并且EXACT相同的代码在主表单中工作正常,但是当我切换到VBA代码中的另一个工作表并使用它时,它会选择从第1列开始到结尾的所有列。数据。
下面代码背后的想法是从第1列开始并搜索名为“综合评级”的列。然后我想删除从第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文件,结果相同。
答案 0 :(得分:2)
尝试以下代码:
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
答案 1 :(得分:0)
选择其他窗口时,index
集合中的Windows
属性会发生变化 - &gt;这是相对的!
改为使用Workbooks
集合。