• 締切済み

リストボックスで項目を選択し、データを削除・・・

初心者です。 リストボックスにRowSourceを使用し、データを表示していますが、この表示されている項目を選択し、「削除ボタン」により、エクセルデータを削除し、さらにその行も削除できればと考えています。よろしければご教授お願いいたします。

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

まずは質問の仕方 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や参考書を活用しましょう

kakerun10
質問者

お礼

ありがとうございました。お蔭様で削除に成功しました。丁寧に回答いただき誠にありがとうございます。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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 といった具合です 字下げには全角スペースを使用しています

kakerun10
質問者

お礼

マクロは、とっても勉強のしがいがあります。いろいろな方法があるのですね。回答ありがとうございます。

関連するQ&A