dポイントプレゼントキャンペーン実施中!

ご覧いただきありがとうございます。

Excelで下記のようなマクロを書いたのですが、思ったような処理をしてくれません。色々なWebページや参考書に当たってみましたが、どうしてもわかりません。どの点が間違っているのか、どう直したらよいか、ご教示いただけませんでしょうか。

なお、意図している処理は次のようなものです。
 ・セルB2:B21のデータをリストボックスに表示(この部分は別途作成済みです)
 ・リストボックスに表示されている項目をユーザーが複数選択する
 ・選択後コマンドボタン2をクリックすると、選択された項目を含む行を削除する

以上ですが、選択した項目のうち最初のものだけを削除しただけで終了しています。お手数をおかけいたしますが、よろしくお願いいたします。

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim I As Integer

If ListBox1.ListIndex = -1 Then
MsgBox "選択されていません"
Exit Sub
End If

Dim myStr(19) As Variant
Dim myCell(19) As Variant

With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
myStr(i) = .List(i)
Set myCell(i) = Workbooks("PERSONAL.XLS").Sheets(1).Range("B2:B21").Find(myStr(I), , xlValues, xlWhole)
ThisWorkbook.Activate
myCell(i).EntireRow.Delete
End If
Next i
End With

Unload Me
Application.ScreenUpdating = True
End Sub

A 回答 (21件中21~21件)

For i = 0 To .ListCount - 1



ListCountは1オリジン(1から始まる。0は項目がない状態)だったと思うのですが…

For i = 1 To .ListCount
にしたらどうなりますか?

この回答への補足

はじめまして。早速のご回答ありがとうございます。

For i = 1 To .ListCount

にしてみたところ、例えばリストの上から1・3・5番目を選んでコマンドボタンをクリックすると、3番目に対応する行が削除され、2・4・6番目を選ぶと、2番目に対応する行が削除されるというように、2番目以降の最初の項目を含む行が削除されるようになりました。よろしくお願いいたします。

補足日時:2007/04/06 22:34
    • good
    • 0

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