1

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

我的问题是,当我使用Windows(index).Activate切换到另一个工作表然后尝试选择要删除的一些列时,它没有正确选择列。我正在使用下面的代码,并且完全相同的代码在主表中工作得很好,但是一旦我切换到 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 文件,结果相同。

4

2 回答 2

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
于 2013-03-10T06:49:22.977 回答
0

选择其他窗口时,集合中的index属性会发生变化 -> 它是相对的!Windows

请改用该Workbooks集合。

于 2013-03-10T05:21:53.910 回答