| 
    
     |  | 最初にA:Bに12時、C:Dに13時とおっしゃっていましたが コードを見る限りA:Dが12時前半、E:Hが12時後半といった感じなのでしょうか?
 
 ws1.Cells(a, 12) = "1200"の"1200"というのは12:00ということでしょうか?
 
 a = 2 to 80で最高79個予約が入っている状態だと推測できるんですが
 ElseIf ws2.Cells(29, 1) <> "" Then
 ws2.Cells(35, 1) = ""
 ws2.Cells(37, 1) = ""
 End If
 =""で空白にしてる部分全般に言えることなのですがなぜ空白にするのでしょうか
 予約の上限なのでしょうか?
 上限になったらExit Forなどでループから抜けるべきではないでしょうか
 
 E:H列に書き込んでいく条件が
 If ws1.Cells(a, 4) = "カット" And ws1.Cells(a, 12) = "1200" And ws1.Cells(a, 14) = "予約可" Then
 とA:D列に書き込んでいく条件と全く同じなので二重予約になると思います。
 正しい動作になのでしょうか?
 間違った動作ならExit Forで抜けたところから再開するよう
 For b = a to 80
 など工夫が必要かもしれません。
 
 Range("E29", "H34") = ""
 などワークシートの指定がない箇所が複数あります。
 こちらからはどのシートなのかわからないので指摘のしようがありません。
 
 完成図が想像でしかわからないのでレイアウトを示してくれるともう少しはっきりとした回答ができるかもしれません。
 
 |  |