Excel 尝试在循环中调用主sub中的sub。获取错误
我想在不使用剪贴板的情况下,以某种方式将数据从一个工作表复制到另一个工作表。为此,我尝试在主sub中调用sub并在循环中使用它。 如果我多次调用sub或在循环中调用sub,则会出现错误。如果我只打一次电话,效果很好。错误是: 运行时错误424“需要对象” 下面给出了我想要运行的代码Excel 尝试在循环中调用主sub中的sub。获取错误,excel,vba,Excel,Vba,我想在不使用剪贴板的情况下,以某种方式将数据从一个工作表复制到另一个工作表。为此,我尝试在主sub中调用sub并在循环中使用它。 如果我多次调用sub或在循环中调用sub,则会出现错误。如果我只打一次电话,效果很好。错误是: 运行时错误424“需要对象” 下面给出了我想要运行的代码 Sub CopyValues(rngSource As Range, rngTarget As Range) rngTarget.Resize(rngSource.Rows.Count, rngSourc
Sub CopyValues(rngSource As Range, rngTarget As Range)
rngTarget.Resize(rngSource.Rows.Count, rngSource.Columns.Count).Value = rngSource.Value
End Sub
Sub Newsheet ()
Numrows = Range("A1", Range("A1").End(xlDown)).Rows.Count
' Select cell a1.
Range("A1").Select
' Establish "For" loop to loop "numrows" number of times.
irow = 1
Sheets.Add After:=ActiveSheet
For RowCount = 1 To Numrows
Call CopyValues(Sheet1.Range("A" & RowCount, "G" & RowCount), Sheet2.Range("A" & irow))
Call CopyValues(Sheet1.Range("H" & RowCount, "AF" & RowCount), Sheet2.Range("A" & irow + 1))
Call CopyValues(Sheet1.Range("AG" & RowCount, "BL" & RowCount), Sheet2.Range("A" & irow + 2))
irow = irow + 3
Next
End Sub
有什么方法可以做到这一点吗?确保声明变量并为工作表创建变量:
Sub Newsheet()
Dim sht1 As Worksheet
Set sht1 = ActiveSheet
Numrows = sht1.Range("A1", sht1.Range("A1").End(xlDown)).Rows.Count
' Establish "For" loop to loop "numrows" number of times.
Dim irow As Long
irow = 1
Dim sht2 As Worksheet
Set sht2 = Sheets.Add(After:=sht1)
Dim RowCount As Long
For RowCount = 1 To Numrows
Call CopyValues(sht1.Range("A" & RowCount, "G" & RowCount), sht2.Range("A" & irow))
Call CopyValues(sht1.Range("H" & RowCount, "AF" & RowCount), sht2.Range("A" & irow + 1))
Call CopyValues(sht1.Range("AG" & RowCount, "BL" & RowCount), sht2.Range("A" & irow + 2))
irow = irow + 3
Next
End Sub
不知道你到底想做什么。您添加了一个新的工作表,但从未对其执行任何操作。如果看到,目标范围在工作表2中。因此,我尝试从第1页复制值,并以某种方式将它们粘贴到第2页。我认为您假设
Sheet2
是对新页的引用,但情况并非如此。