Dim LSearchRow As Integer
Dim LCopyToRow As Integer
Dim wks As Worksheet
On Error GoTo Err_Execute
For Each wks In Worksheets
ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
Set wksCopyTo = ActiveSheet
wks.Rows(3).EntireRow.Copy wksCopyTo.Rows(3)
'Start search in row 4
LSearchRow = 4
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 4
While Len(wks.Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column E = "Mail Box", copy entire row to Sheet2
If wks.Range("AB" & CStr(LSearchRow)).Value = "Yes" And wks.Range("AK" & CStr(LSearchRow)).Value = "Yes" And wks.Range("BB" & CStr(LSearchRow)).Value = "Y" Then
'Select row in Sheet1 to copy
wks.Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy
MsgBox "Copying Row"
'Paste row into Sheet2 in next row
wksCopyTo.Select
wksCopyTo.Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
wksCopyTo.Paste
MsgBox "Pasting Row"
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
wks.Select
End If
LSearchRow = LSearchRow + 1
Wend
'Position on cell A3
Application.CutCopyMode = False
Range("A3").Select
MsgBox "All matching data has been copied."
Next wks
Exit Sub
Err_Execute:
MsgBox "An error occurred."
やあ
私は他の場所で与えられたコードに基づいた上記のコードを持っています。コードは、if ステートメントで指定された基準を満たす行をコピーするときに、既存のワークシートごとに新しいワークシートを作成する必要がある場所に適応されています。私が抱えている問題は次のとおりです。
- Excel では、コードを実行する前に存在するすべてのワークシートを最初に見つけて、ループを回避できますか?
- 1 つのワークシートで作業しているときに指定したコードが、しばらくすると実行されません。その理由がわかりません。
- 1 つのワークシートで実行すると、32,000 行後にクラッシュします
誰でも助けることができますか?