|
▼n さん:
▼Abebobo さん:
▼UO3 さん:
色々ご回答ありがとうございます。
長かったので、省略した部分を全て書きます。
下記のことがしたいので、アドバイスお願いします。
『会社名で検索して、ない時にはメッセージボックスを表示させ、
再試行のときは、別シートのその会社の行を削除して、再度UserForm2を開く。
キャンセルのときは、UserForm2を閉じる。』
エラーは2つです。
1.再試行のときは、再度UserForm2が開くのですが、
CommandButton3を押すと、
『オブジェクト変数またはWithブロック変数が設定されていません』と出ます。
2.キャンセルのときは、すぐに
『オブジェクト変数またはWithブロック変数が設定されていません』と出ます。
これで分かるでしょうか?
Private Sub UserForm_Initialize()
Dim a As Integer
Dim x As Range
Dim y As Range
Dim z As Range
Sheets("会社一覧").Select
Set x = Sheets("会社一覧").Columns("B") _
.Find(what:=Sheets("カウンター数一覧").Range("J1").Value, lookat:=xlWhole)
x.Select
a = Sheets("会社一覧").Range("B3").End(xlDown).row
ComboBox1.RowSource = "会社一覧!B3:B" & a
If x.Offset(1, 0) = "" Or Sheets("カウンター数一覧").Range("J1").Value = "" Then
ComboBox1.Value = Sheets("会社一覧").Range("B3").Value
TextBox2.Value = Sheets("会社一覧").Range("F3").Value
TextBox3.Value = Sheets("会社一覧").Range("H3").Value
TextBox5.Value = Sheets("会社一覧").Range("I3").Value
If Sheets("会社一覧").Range("G3").Value <> "" Then
TextBox4.Visible = True
TextBox4.Value = Sheets("会社一覧").Range("G3").Value & " 様"
Else
TextBox4.Visible = False
TextBox4.Value = ""
End If
Else
ComboBox1.Value = x.Offset(1, 0).Value
TextBox2.Value = x.Offset(1, 4).Value
TextBox3.Value = x.Offset(1, 6).Value
TextBox5.Value = x.Offset(1, 7).Value
If x.Offset(1, 5).Value <> "" Then
TextBox4.Visible = True
TextBox4.Value = x.Offset(1, 5).Value & " 様"
Else
TextBox4.Visible = False
TextBox4.Value = ""
End If
End If
Label14.Caption = ""
If x.Offset(1, -1).Value <> "" Then
Label14.Caption = "契約情報 " & x.Offset(1, -1).Value
Label14.ForeColor = RGB(255, 0, 0)
CommandButton2.SetFocus
End If
TextBox6.Value = Month(Date) - 1
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 ←2.ここでエラーが出ます。
End If
End If
End Sub
Private Sub CommandButton3_Click()
Application.CutCopyMode = False
Unload UserForm2 ←1.ここでエラーが出ます。
End Sub
|
|