VBA运行时错误424(需要对象)/图纸之间的匹配单元格
我有一个x列的主表。我试图在每列中的第一个单元格和许多工作表中的另一个单元格之间找到匹配项。找到匹配项后,我将尝试复制整个列(不包括匹配的值),并将其粘贴到找到工作表的工作表上。我一直收到运行时错误424。我写的代码如下VBA运行时错误424(需要对象)/图纸之间的匹配单元格,vba,excel,Vba,Excel,我有一个x列的主表。我试图在每列中的第一个单元格和许多工作表中的另一个单元格之间找到匹配项。找到匹配项后,我将尝试复制整个列(不包括匹配的值),并将其粘贴到找到工作表的工作表上。我一直收到运行时错误424。我写的代码如下 Dim lc As Long Dim cell1 As Range, cell2 As Range Dim wbk As Workbook Dim sh4 As Worksheet Dim v As Long Set wbk = ThisWorkbook Set sh4 =
Dim lc As Long
Dim cell1 As Range, cell2 As Range
Dim wbk As Workbook
Dim sh4 As Worksheet
Dim v As Long
Set wbk = ThisWorkbook
Set sh4 = Sheets(4)
lc = sh4.Cells(1, Columns.Count).End(xlToLeft).Column
For v = 1 To lc
Set cell1 = sh4.Cells(1, v)
For Each Sheet In wbk.Worksheets
If Sheet.Index > 5 Then
Sheet.Select
Set cell2 = Range("B1")
If StrComp(CStr(cell1.Value), CStr(cell2.Value), vbBinaryCompare) = 0 Then
If cell1.Offset(0, 0).Value = cell2.Offset(0, 0).Value Then
sh1.Range(Cells(2, v), Cells(28, v)).Resize(1, 2).Copy
Sheet.Range("F2").PasteSpecial xlPasteValues
End If
End If
End If
Next Sheet
Set cell1 = Nothing
Set cell2 = Nothing
Next v
我觉得我错过了一些简单的东西。我们将不胜感激。谢谢。您的代码似乎有很多地方出错。我继续,并添加了一些快速修复,希望能使它运行良好。一、 就个人而言,我讨厌Excel的
.Paste
和.PasteSpecial
函数(这种讨厌是相互的),所以我总是创建列表或使用变量来复制东西
不幸的是,我不认为.Resize
函数能达到您所期望的效果。通过使用它,您只需要从调整大小的范围的第一个单元格开始抓取第一行和前两列
这里有一些代码,除了错误消息之外,它们应该做与您的代码完全相同的事情!如果你需要一些帮助来理解我所做的一些改变或者如何实现你的目标,请不要犹豫
Dim lc As Long
Dim cell1 As Range, cell2 As Range
Dim wbk As Workbook
Dim sh4 As Worksheet, sh as Worksheet
Dim v As Long
Dim value1 As Variant, value2 As Variant
Set wbk = ThisWorkbook
Set sh4 = wbk.Sheets(4)
lc = sh4.Cells(1, Columns.Count).End(xlToLeft).Column
For v = 1 To lc
Set cell1 = sh4.Cells(1, v)
value1 = cell1.Value
For Each sh In wbk.Worksheets
If sh.Index > 5 Then
sh.Select
Set cell2 = sh.Range("B1")
If StrComp(CStr(value1), CStr(value2), vbBinaryCompare) = 0 Then
If value1 = value2 Then
sh.Range("F2") = sh4.Cells(2, v)
sh.Range("G2") = sh4.Cells(2, v + 1)
End If
End If
End If
Next sh
Set cell1 = Nothing
Set cell2 = Nothing
Next v
在您展示给我们的代码中,您没有在任何地方定义
sh1
,因此这可能是导致错误的原因。@djikay很抱歉,这里的输入错误应该是sh4。它仍然不起作用,我得到了一个不同的运行时错误(1004)。我将尝试在不同的标题下重新发布您还需要限定您的单元格
对象。我怀疑您应该在它们之前添加sh4.
,例如:sh4.Range(sh4.Cells(2,v),sh4.Cells(28,v))。调整大小(1,2)。复制。如果不这样做,则它们将引用当时处于活动/选定状态的任何工作表。很好的做法是明确说明各种对象所引用的工作表。您还没有告诉我们错误发生在哪一行,以及错误发生时该行上引用的变量值。太棒了。我试过了,没有错误,但不起作用。另外,如果我希望sh.Range(“F2”)等于从第2行开始到该列最后一行的sh4中的“v”列,该怎么办?非常感谢。