| 
    
     |  | >    With Worksheets("上期") >      Do While IsError(myRowSJ) = False
 >      myRowSJ = Application.Match(sakujyol, .Range("A:A"), 0)
 >      .Cells(myRowSJ, "A").EntireRow.Delete shift:=xlUp
 >      Loop
 >    End With
 
 上記のコードに問題があると思われます。
 削除するデータが見つからず、myRowSJにエラー値が格納された場合、
 次の行[.cells(myRowSJ,〜]でエラー値を参照してしまいエラーが発生します。
 
 例えば、下記のようにループを抜ける条件の位置を変えてみてはいかがでしょうか。
 
 With Worksheets("上期")
 Do
 myRowSJ = Application.Match(sakujyol, .Range("A:A"), 0)
 If (IsError(myRowSJ)) Then Exit Do
 .Cells(myRowSJ, "A").EntireRow.Delete shift:=xlUp
 
 DoEvents '←お好みで
 Loop
 End With
 
 |  |