我的VBA代碼是根據特定的輸入條件,將工作簿中幾張工作表的行復制/粘貼到另一個工作表中。它使用InStr搜索在第17-50行之間的列D中以「E」開始的工作表上查找輸入條件 - 這是行之有效的。VBA代碼只在debug.mode中正確工作
但是,通過按鈕激活子時,它只複製/超出它找到的第一個條目並跳轉到下一個工作表。在debug.mode中,它查找一個工作表中的所有條目,並複製/粘貼,然後跳轉到下一個工作表。
我需要改變什麼?
Sub request_task_list()
Dim rPlacementCell As Range
Dim myValue As Variant
Dim i As Integer, icount As Integer
myValue = InputBox("Please enter the Name (Name or Surname) of the Person whos task you are looking for", "Input", "Hansen")
If myValue = "" Then
Exit Sub
Else
Set rPlacementCell = Worksheets("Collect_tool").Range("A3")
For Each Worksheet In ActiveWorkbook.Worksheets
'Only process if the sheet name starts with 'E'
If Left(Worksheet.Name, 1) = "E" Then
Worksheet.Select
For i = 17 To 50
If InStr(1, LCase(Range("D" & i)), LCase(myValue)) <> 0 Then
'In string search for input value from msg. box
'Copy the whole row if found to placement cell
icount = icount + 1
Rows(i).EntireRow.Copy
rPlacementCell.PasteSpecial xlPasteValuesAndNumberFormats
Range("D2").Copy
rPlacementCell.PasteSpecial xlPasteValues
Set rPlacementCell = rPlacementCell.Offset(1)
End If
Next i
End If
Next Worksheet
Worksheets("collect_tool").Activate
Range("B3").Activate
End If
End Sub
我想你需要把你的'如果左(Worksheet.Name,1)=「E」然後'語句內的for循環 – user1
哇,這似乎工作得很好。在debug.mode中使用上面的代碼的原因可能是什麼? – FlightPlanner