プロが教えるわが家の防犯対策術!

初心者です。

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

A 回答 (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や参考書を活用しましょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/23 17:19

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
といった具合です
字下げには全角スペースを使用しています
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/23 17:24

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

このQ&Aを見た人はこんなQ&Aも見ています