在VBA中激活和切换表单
我正在尝试编写一个代码,可以在表单之间来回切换,从一张纸上取得input,然后粘贴到另一张纸上。 这是代码。
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读取下标超出范围。
我该怎么办?
看起来你正在循环使用for
,并在你的for
循环中增加r
。 在使用之前,我也没有看到c
。
另外,BruceWayne已经指出,不是使用Active
/ Select
,而是明确定义你的表单和范围。
Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Sheets("Sheet 1")
对于ws2
和ThisWorkbook.Sheets("Compiled Data")
。
最后,不要设置variables,为什么不直接放入数据呢?
Dim leftCol as Integer leftCol = ws1.Cells.Find("*", SearchOrder:=xlByColumns, searchdirection:=xlNext).Column ws2.Cells(oRow, c).value = ws1.Cells(r, leftCol).value