旅行好きのおしりトラブル対策グッズ3選

Windows7 Excel2007でマクロ作成中の初心者です。
リストボックスから、シート(顧客名)を選んで削除するマクロです。
削除がうまくいくのですが、「いいえボタン」を押しても
シートが削除されてしまいます。どう修正したらよろしいでしょうか。

Private Sub 顧客削除_Click()
Dim i As Integer
Dim btn
Dim name As String
With 顧客リスト
For i = 0 To .ListCount - 1
If .Selected(i) Then
name = .list(i) '選択されたリストを変数に格納
btn = MsgBox("本当に、 " & name & " さんを削除していいですか?", _
vbYesNo, "削除の確認")
End If
Next i
Application.DisplayAlerts = False
Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete
Application.DisplayAlerts = True
'顧客リスト.RemoveItem (顧客リスト.ListIndex)
'顧客リスト.ListIndex = -1
リストボックスの項目削除
Worksheets(1).Activate
End With
If btn = vbYesNo Then
Exit Sub
End If
ActiveWorkbook.Save
End Sub
-----------------------------------------------
Sub リストボックスの項目削除()
Dim i As Integer
For i = 顧客リスト.ListCount - 1 To 0 Step -1
If 顧客リスト.Selected(i) Then
顧客リスト.RemoveItem (i)
Exit For
End If
Next i
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (1件)

コードを拝見してみると


If btn = vbYesNo Then
Exit Sub
End If
の場所がおかしいですよ。やりたいことがいまいちわからないので一部こちらの想像で

Private Sub 顧客削除_Click()
Dim i As Integer
Dim btn
Dim name As String
With 顧客リスト
For i = 0 To .ListCount - 1
If .Selected(i) Then
name = .list(i) '選択されたリストを変数に格納
btn = MsgBox("本当に、 " & name & " さんを削除していいですか?", _
vbYesNo, "削除の確認")

If btn = vbYes Then

Application.DisplayAlerts = False
Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete
Application.DisplayAlerts = True

End If

End If
Next i
Worksheets(1).Activate
End With
ActiveWorkbook.Save
End Sub
    • good
    • 0
この回答へのお礼

あああありがとごぜいますだ。簡略した上自分のおもうとおりのことができました。感謝します。

お礼日時:2013/03/17 19:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング