我正在尝试编写一个寻找特定值的循环" Fund"在一张纸上,复制以下范围,在另一张纸上找到该值,然后将其粘贴到它旁边。我不断收到语法错误,例如对象需要和下标超出范围。有人可以帮忙吗?
提前致谢!
Dim wkb As Workbook
Dim b As Long
Dim c As Long
Dim LCellP As Long
Dim LCellCopy As Long
Set wkb = Application.ActiveWorkbook
Set IandC = wkb.Sheets("Instructions and CrossRef")
Set Comparison = wkb.Sheets("Comparison")
Set Previous = wkb.Sheets("Previous")
'Move Previous Flows to Comparison Sheet
With Comparison
LCellCopy = Cells(Rows.Count, "A").End(xlUp).Row
End With
Cells(1, 4) = "Good"
Cells(1, 5) = "Not on Previous"
For b = 1 To LCellP
v = Cells(b, 1).Value
If Left(v, 4) = "Fund" Then
For c = 1 To LCellCopy
u = Comparison.Cells(c, 1).Value
If u = Cells(b, 1).Value Then
Comparision.Range(Cells(c, 4), Cells(c + 15, 5)) = Previous.Range(Cells(b, 1), Cells(b + 15, 2)).Value
End If
Next c
End If
Next b
答案 0 :(得分:1)
您的With Comparison
块实际上并未将任何内容解析回该工作表。试试这个(注意.
和Cells
之前的Rows
,这意味着它们属于With Comparison
对象。
'Move Previous Flows to Comparison Sheet
With Comparison
LCellCopy = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
该片段不应该导致任何错误,但我想指出它。
在相关说明中,任何时候您引用的是不合格的Range
或Cells
对象,它始终默认为ActiveSheet
,因此:
Range("A1")
相当于:
ActiveSheet.Range("A1")
同样地:
Cells(1, 3)
相当于:
ActiveSheet.Cells(1,3)
当你混合你的资格时,这就成了一个问题。如果Sheet1处于活动状态,则始终会出现错误:
Worksheets("Sheet2").Range(Cells(1,1), Cells(1,3)).Value
为什么?? 因为即使Cells
在括号内,它也会在ActiveSheet
的上下文中进行评估,这可能与排位赛的内容不同“Sheet2”,它基本上是在说:
Worksheets("Sheet2").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,3)).Value
由于Sheet1上定义的范围没有,并且在Sheet2上不存在,因此引发了熟悉的1004错误。
所以,虽然我不确切地知道哪条线路会给你造成问题,但我怀疑它是否适用于质量不合格或不合格的范围对象。
答案 1 :(得分:0)
让它与下面的工作,可能不是最好的,但谢谢!
If u = Cells(b, 1).Value Then
Sheets("Previous").Select
Range(Cells(b, 1), Cells(b + 15, 2)).Select
Selection.Copy
Sheets("Comparison").Select
Range("D" & c).Select
ActiveSheet.Paste
Sheets("Previous").Select
End If