我对VBA相对比较陌生,我只有一些Python的使用经验,只有很少的经验来看待其他VBA宏,并根据我的需要调整它们,所以我正在尝试尽我所能。选择和粘贴单元格
我想要做的是每个零件号粘贴在工作表B(工作表B,行A)我想从包含所有零件号(工作表D,行A)的不同工作表中找到相同的零件号和将工作表D中的描述(工作表D,行H)复制到另一列(工作表B,行D),然后检查行中的下一个零件编号并重复。
我得到的当前错误是有“编译错误:否则如果”,我很抱歉,我不是很精通,但任何帮助将不胜感激。
其他信息:
-My零件号通过工作表B到搜索,B列从工作表中填写,是它没关系只是使它= A B2或= CONCATENATE(A B2!)! ?
Sub Description()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet, wsD As Worksheet
Dim Rng As Range
Set wsB = Worksheets("B")
Set wsD = Worksheets("D")
Do: aRow = 2
If wsB.Cells(aRow, 2) <> "" Then
With Worksheets("D").Range("A:A")
x = wsB.Cells(aRow, 2)
Set Rng = .Find(What:=x, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
Selection.Copy
wsB.Cells(dRow, 2).Paste
dRow = dRow + 1
Else
aRow = aRow + 1
Loop Until wsB.Cells(aRow, 2) = ""
End Sub
再次感谢!
编辑:在中断模式下不能执行的代码是当前的错误
Sub Description()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet, wsD As Worksheet
Dim Rng As Range
Set wsB = Worksheets("B")
Set wsD = Worksheets("D")
aRow = 2
dRow = 2
Do:
If wsB.Cells(aRow, 1) <> "" Then
With Worksheets("D").Range("A:A")
Set Rng = .Find(What:=wsB.Cells(aRow, 1), _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
Rng.Copy
Rng.Offset(0, 3).Paste (Cells(aRow, 4))
dRow = dRow + 1
aRow = aRow + 1
End With
End If
Loop Until wsB.Cells(aRow, 1) = ""
End Sub
我相信'Else'之前的'End With'也是必需的。实际上,更好的方法是将'With ... End With'块移到'For ... Next'循环之外,因为它不会被for ... next中的任何东西重新定义。 – Jeeped
是的。在VBA多行语句中需要'End ***' – zmechanic
我把aRow和dRow定义放在Do之上:所以它不会在每次循环时重置 – Ryan