我對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