Excel VBA列范围选择选择错误的列

时间:2013-03-10 05:13:17

标签: excel excel-vba excel-2007 vba

我正在处理一个宏,该宏将在一个工作簿中的多个工作表上运行,在工作表之间切换以及将数据复制/粘贴到一个主工作表。

我的问题是,当我使用 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文件,结果相同。

2 个答案:

答案 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集合。