|
いろいろ調べてみましたが、解決できないので教えてください。
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
|
|