1
我在Sheet2的“TransTypes”动态命名的范围,我定义为一个嵌套的循环:通过动态循环命名范围VBA
=OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!A:A),1)
和我的循环如下:
Sub Repeat_trans_type()
Dim Trans_type_count As Integer, wb As Workbook, wsMain As Worksheet, nwb As Workbook
Dim i As Integer, nws As Worksheet, wsSheet2 As Worksheet, j As Integer, cell As Range
Dim k As Integer
Trans_type_count = Sheet2.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
Application.ScreenUpdating = False
Set wb = Workbooks("Book1.xlsm")
Set wsMain = wb.Sheets("Sheet1")
Set wsSheet2 = wb.Sheets("Sheet2")
j = 1
k = 1
Set nwb = Workbooks.Add
Set nws = nwb.Sheets(1)
For j = 1 To 96
i = 1
Set cell = Nothing
For Each cell In wsSheet2.Names("TransTypes").RefersToRange.Cells
wsMain.Range("A" & j, "C" & j).Copy
nws.Range("A" & k).PasteSpecial xlPasteValues
nws.Range("A" & k).PasteSpecial xlPasteFormats
wsSheet2.Range("A" & i).Copy
nws.Range("D" & k).PasteSpecial xlPasteValues
nws.Range("D" & k).PasteSpecial xlPasteFormats
i = i + 1
k = k + 1
Next cell
Next j
End Sub
嵌套循环的第一次迭代工作正常,但在启动时对第二次执行,即,J = 2,I得到的错误消息:
Application-defined or object-defined error
截至目前,我已通过使用下面的工作:
For Each cell In wsSheet2.Range("A1", wsSheet2.Range("A1").End(xlDown))
而不是直接使用指定的范围。
为什么偏移方法不工作的任何想法,将不胜感激。
谢谢。
不知道你对于每一个循环是做什么的根本就没有在循环中引用它?你应该发布你的所有代码。 – SJR
我已编辑帖子以包含完整的代码。 – dexterd
好的,通过范围循环的重点是什么? – SJR