|    | 
     いろいろ調べてみましたが、解決できないので教えてください。 
 
yが存在しないときに、メッセージを表記し、 
再試行のときは、行を削除して、UserForm2を再度開きたい。 
キャンセルのときは、そのままUserForm2を閉じたいのです。 
 
1.再試行のときは、再度UserForm2が開くのですが、 
 CommandButton3を押すと、 
『オブジェクト変数またはWithブロック変数が設定されていません』と出ます。 
 
2.キャンセルのときは、すぐに 
『オブジェクト変数またはWithブロック変数が設定されていません』と出ます。 
 
このエラーが出ないようにするためにはどうしたらいいのでしょうか? 
長いものになりますが、よろしくお願いします。 
エクセル2007です 
 
Sheets("カウンター数一覧").Select 
 
Set y = Sheets("カウンター数一覧").Columns("B")  
    .Find(what:=ComboBox1.Value, lookat:=xlWhole) 
Set z = Sheets("カウンター数一覧").Range("D2:O2") _ 
    .Find(what:=TextBox6.Value & "月", lookat:=xlWhole _ 
       , MatchByte:=False) 
 
If Not y Is Nothing Then 
 y.Select 
 
 TextBox7.Value = Format(Sheets("カウンター数一覧") _ 
         .Cells(y.row, z.Column).Value, "#,##0") 
 
 If y.Offset(0, 1).Value = "モノクロ" Then 
  TextBox8.Value = Format(Sheets("カウンター数一覧") _ 
         .Cells(y.row + 2, z.Column).Value, "#,##0") 
  TextBox8.BackColor = &H80000005 
 Else 
  TextBox8.BackColor = &H8000000F 
 End If 
Else 
 msg = MsgBox("『カウンター数一覧』に該当の会社名がありません。"&vbCrLf& _ 
       "どちらかの処理をしてください。" & vbCrLf & "" & vbCrLf & _ 
       "  再試行ボタン⇒『会社一覧』から列削除します。"&vbCrLf& _ 
       "キャンセルボタン⇒2つのシートが一致するよう、" &vbCrLf & _ 
       "            何かしらの処理をしてください。 " _ 
       , vbRetryCancel + vbCritical, "シート同士の不一致") 
 If msg = vbRetry Then 
 Sheets("会社一覧").Rows(x.Offset(1, 0).row).Delete Shift:=xlUp 
 Unload UserForm2 
 UserForm2.Show 
 Else 
 Unload UserForm2 
 End If 
End If 
 
Private Sub CommandButton3_Click()←UserForm2内にあるキャンセルボタン 
 
Application.CutCopyMode = False 
Unload Me 
 
End Sub 
 | 
     
    
   |