VBA中的床单之间激活和切换



我正在尝试编写一个代码,该代码将在床单之间来回切换,从一个纸上取出输入,然后将其粘贴在另一张纸上。这是代码。

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

问题是当我到达。激活部分时,Excel读到下标不超出范围。

我该怎么办?

看起来您都使用for循环通过r,然后在for中递增r。在使用之前,我也不会在任何地方看到c

此外,当Brucewayne已经指出的那样,而不是使用Active/Select,而是明确定义您的床单和范围。

Dim ws1  As Worksheet
Set ws1 = ThisWorkbook.Sheets("Sheet 1")

对于ws2ThisWorkbook.Sheets("Compiled Data")

最后,而不是设置变量,为什么不直接将数据放入?

Dim leftCol as Integer
leftCol = ws1.Cells.Find("*", SearchOrder:=xlByColumns, searchdirection:=xlNext).Column
ws2.Cells(oRow, c).value = ws1.Cells(r, leftCol).value

最新更新