私のVBAコードは、特定の入力条件に基づいてブック内の複数のシートから別のシートに行をコピー/貼り付けしています。これは、InStr検索を使用して、17〜50行目の列Dの "E"で始まるシート上の入力条件を検索します。これは正常に機能しています。VBAコードはdebug.modeでのみ正常に動作しています
ただし、ボタンでサブをアクティブにすると、最初に見つかったエントリだけがコピー/ペーストされ、次のワークシートにジャンプします。 debug.modeでは、1つのワークシート内のすべてのエントリを検索し、コピー/ペーストしてから次のワークシートにジャンプします。
変更する必要があるのは何ですか?
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
私は 'For Left(Worksheet.Name、1)=" E "Then'ステートメントをforループの中に置く必要があると思います – user1
うわー、うまくいくようです。 debug.modeで上記のコードを使った理由は何でしょうか? – FlightPlanner