find“材料”,复制它的单元格并粘贴到另一个表

我在VBA中有点新鲜 我想要做的是在行(n)中find单词“材料”,从上面复制所有单元格,并将它们粘贴到列A中的另一个表格中。arr2 – 列将使用相同的function,但具有不同的话。 从我的代码,我不断收到错误。 你能帮我修复代码吗?

Dim t As Range n = InputBox("Row number of FIRST MATERIAL") arr2 = Array("A", "D", "E", "O", "P", "S", "W", "Y", "AB") Set t = Sheets("Project Parts Requisitioning").Rows(n).Find("*Material*", LookAt:=xlWhole) If t Is Nothing Then MsgBox ("Material was not found") End If If Not t Is Nothing Then Sheets("Project Parts Requisitioning").Rows(n).Find("*Material*", LookAt:=xlWhole).End(xlDown).Copy Sheets("GCC1").Column("A").PasteSpecial xlPasteValues End If 

问题如下:

用这一行:

 Sheets("Project Parts Requisitioning").Rows(n).Find("*Material*", _ LookAt:=xlWhole).End(xlDown).Copy 

您复制给定工作表中的最后一个单元格。 例如,行1048576的单元格或发现的单元格中的较低单元格。 但是你只复制一个单元格。 然后用下一行

 Sheets("GCC1").Column("A").PasteSpecial xlPasteValues 

您尝试将此单元格粘贴到列中。 这不会发生。


一般来说,尝试将代码改写成任何人都可以轻松再现的代码。 那么错误会更明显。 喜欢这个:

 Option Explicit Public Sub TestMe() Dim n As Long Dim t As Range Dim arr2 As Variant Dim strToLookFor As String: strToLookFor = "*Material*" n = 11 'you do not need an input box for testing purposes 'How do you use this array? arr2 = Array("A", "D", "E", "O", "P", "S", "W", "Y", "AB") Set t = Worksheets(1).Rows(n).Find(strToLookFor, LookAt:=xlWhole) If t Is Nothing Then Debug.Print ("Material was not found") 'No msgbox when testing End If If Not t Is Nothing Then 'you copy only one cell here Worksheets(3).Rows(n).Find(strToLookFor, LookAt:=xlWhole).End(xlDown).Copy 'but you try to paste it in a column? Worksheets(4).Column("A").PasteSpecial xlPasteValues End If End Sub 

尝试这个

 Sub testso1() Dim t As Range n = InputBox("Row number of FIRST MATERIAL") arr2 = Array("A", "D", "E", "O", "P", "S", "W", "Y", "AB") Set t = Sheets("Project Parts Requisitioning").Rows(n).Find("*Material*", LookAt:=xlWhole) If Not t Is Nothing Then Sheets("GCC1").Columns("A") = t.EntireColumn.Value Else MsgBox ("Material was not found") End If End Sub