- 締切済み
リストボックスで項目を選択し、データを削除・・・
初心者です。 リストボックスにRowSourceを使用し、データを表示していますが、この表示されている項目を選択し、「削除ボタン」により、エクセルデータを削除し、さらにその行も削除できればと考えています。よろしければご教授お願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
まずは質問の仕方 windows、excelのバージョンは書いておきましょう 「削除ボタン」では無くコマンドボタンなのでは この辺をちゃんと書いておかないと、回答が付きにくいよ '-------------------------------------------------------- Private Sub CommandButton1_Click() Dim 選択行 As Integer For 選択行 = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(選択行) Then Rows(選択行 + 1).Delete Shift:=xlUp '※ End If Next End Sub '-------------------------------------------------------- 注意 リストボックスのリストの1行目を選択すると値0が返ってくる(仕様)ので マクロの※の行の 選択行 + 1 の1の部分を RowSourceに設定されている先頭の行数に変更すること 例えば RowSourceが A2:A10 ならば 2 を B10:R50 なら 10 に変更する と比較的簡単なマクロです webや参考書を活用しましょう
- redfox63
- ベストアンサー率71% (1325/1856)
ListBoxのRowSourceプロパティからRangeオブジェクトを作成して そのRangeオブジェクトでFindメソッド実行して行を特定しましょう Sub CommandButon1_Click() dim ss as string ss = ListBox1.Text if ss <> "" then dim r as Range, s as Range Set s = Range( ListBox.RowSource ) Set r = s.Find( ss ) if not r is nothing then ' 1行削除なら r.EntryRow.delete ' セルの削除なら ' r.Delete xlShiftUp ListBox1.RowSource = s.Address(0,0) end if end if End Sub といった具合です 字下げには全角スペースを使用しています
お礼
マクロは、とっても勉強のしがいがあります。いろいろな方法があるのですね。回答ありがとうございます。
お礼
ありがとうございました。お蔭様で削除に成功しました。丁寧に回答いただき誠にありがとうございます。