。在VBA中的工作表之间激活和切换

时间:2016-06-16 21:14:04

标签: excel vba toggle

我试图编写一个代码,它会在工作表之间来回切换,从一张纸上获取输入,然后将它们粘贴在另一张纸上。这是代码。

For r = 1 To ActiveCell.End(xlDown).Row
    Cells(1, c).Select
        Do Until IsEmpty(Selection)

            name = ActiveCell.End(xlToLeft).Value
            email = ActiveCell.End(xlToLeft).Offset(0, 1).Value
            phoneNumber = ActiveCell.End(xlToLeft).Offset(0, 2).Value
            generation = ActiveCell.End(xlToLeft).Offset(0, 3).Value
            status = ActiveCell.End(xlToLeft).Offset(0, 13).Value
            ActiveCell.Offset(1, 0).Select
        Sheets("Compiled Data").Select

'paste data

        Cells(oRow, c) = name
        Cells(oRow, c + 1) = email
        Cells(oRow, c + 2) = phoneNumber
        Cells(oRow, c + 3) = generation
        Cells(oRow, c + 4) = status

        oRow = oRow + 1
        r = r + 1
        Sheets("Sheet 1").Activate
        Loop

Next

问题是,当我到达.Activate部分时,Excel会读取下标超出范围。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

看起来您使用isinstance(obj, bytes)循环r,并在for中递增r。在使用之前我也没有看到for

此外,不要像BruceWayne已经指出的那样使用c / Active,而是明确定义工作表和范围。

Select

Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Sheets("Sheet 1") ws2相同。

最后,为什么不直接将数据放入?

,而不是设置变量
ThisWorkbook.Sheets("Compiled Data")