advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 8926 for リスト (0.007 sec.)
[[20201212231243]]
#score: 2746
@digest: b782af49fcaea85c1cf7fe27896211f3
@id: 86082
@mdate: 2020-12-14T16:52:53Z
@size: 4520
@type: text/plain
#keywords: dodelete (22494), removeitem (12654), 直結 (8350), rowsource (8201), fmmultiselectmulti (6267), トボ (6024), columnwidths (5290), listcount (5104), listbox1 (5065), columncount (3641), selected (3121), multiselect (3005), ボッ (2977), リス (2701), クス (2509), 列表 (2402), イテ (1832), スト (1757), initialize (1529), ム上 (1434), ドボ (1250), userform (1208), 数列 (1120), スか (1053), ック (1021), テム (978), アイ (937), コマ (916), ーフ (861), address (844), 削除 (791), commandbutton1 (791)
『複数列表示のリストボックス削除について』(X&X)
はじめまして。 ユーザーフォーム上に複数列表示するリストボックスがあります。 Private Sub UserForm_Initialize() Dim l As Long l= Cells(Rows.Count, 1).End(xlUp).Row With ListBox1 .ColumnCount = 6 .ColumnWidths = "35;55;25;25;25;25" .RowSource = Range("A2", "F" & l).Address End With End Sub これを同ユーザーフォーム上にあるコマンドボタンを押すと、例えばインデックス1のリストリストボックスから削除したい場合 ListBox1.RemoveItem (1) これだと、「予期せぬエラーが発生しました」とエラーが出ます。 やりたいことは、複数選択可能にして、選んだリストは全て削除するようにしたいのですが、これ以上の知識はありません。教授お願いします。 < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- リストボックスの仕様はわかりにくいですよね。 とりあえずサンプルコードを乗せておきます。 (リストボックスから削除したアイテムはワークシート上からも削除されますのでご注意ください) Private Sub UserForm_Initialize() Dim l As Long l = Cells(Rows.Count, 1).End(xlUp).Row With ListBox1 .ColumnCount = 6 .ColumnWidths = "35;55;25;25;25;25" .MultiSelect = fmMultiSelectMulti .RowSource = Range("A2", "F" & l).Address End With End Sub Private Sub CommandButton1_Click() Dim doDelete As New Collection With ListBox1 Dim i As Long For i = 0 To .ListCount - 1 If .Selected(i) Then doDelete.Add Rows(i + 2) End If If i >= .ListCount - 1 Then Exit For End If Next End With Dim rng As Range For Each rng In doDelete rng.Delete Next Dim l As Long l = Cells(Rows.Count, 1).End(xlUp).Row ListBox1.RowSource = Range("A2", "F" & l).Address End Sub //////////以下解説///////////////////////////// まず前提として、RowSourceプロパティはリストボックスとセルのリンクを設定するものです。 したがって、リストボックスの中身を変更したければ、本来はセルの方を操作しなくてはいけません。RemoveItemメソッドでリストボックスを操作しようとしているのでエラーになります。 リストボックスの一番上のアイテムを削除したいのであれば、コマンドボタンのイベントに記述するのは、 Rows(2).Delete です。さらに、データが一行上にずれたことでリストボックスの一番下が空欄になってしまうので、リンクを再設定する必要があります。 Rows(2).Delete Dim l As Long l = Cells(Rows.Count, 1).End(xlUp).Row ListBox1.RowSource = Range("A2", "F" & l).Address なお、リストボックスの変更をセルに反映させたくないのであれば、セルの配列をそのままリストボックスに突っ込めばOKです。 ListBox1.List = Range("A2:F" & l).Value この場合は、上記のRemoveItemメソッドでリストボックスからアイテムを消去することができます。 サンプルコードも乗せておきます。 Private Sub UserForm_Initialize() Dim l As Long l = Cells(Rows.Count, 1).End(xlUp).Row With ListBox1 .ColumnCount = 6 .ColumnWidths = "35;55;25;25;25;25" .MultiSelect = fmMultiSelectMulti .List = Range("A2:F" & l).Value End With End Sub Private Sub CommandButton1_Click() With ListBox1 Dim i As Long For i = 0 To .ListCount - 1 If .Selected(i) Then .RemoveItem i i = i - 1 End If If i >= .ListCount - 1 Then Exit For End If Next End With End Sub (ひいらぎ) 2020/12/13(日) 02:10 ---- RowSourceなんだから、直接 セルを操作すれば良いんのでないですかね。 RowSource セルとリストボックスは直結してます。 セルの内容を変えれば、リストボックスに リストボックスの内容を変えれば、にセルにすぐ反映されます。 (Why) 2020/12/13(日) 03:06 ---- 丁寧な回答ありがとうございます。 リストボックスから選んだデータは、コマンドボタンを押すとセルに反映されると同時に、リストボックスから消えるところまではいいのですが、この後、セルに反映されたデータを削除してユーザーフォームを立ち上げると、またそのデータがリストボックスに復活するようにするにしたいのですが、どうしたらいいでしょうか? (X&X) 2020/12/15(火) 00:40 ---- RowSource セルとリストボックスは直結してます。 と書きました。 意味解りますよね。 (Why) 2020/12/15(火) 01:52 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202012/20201212231243.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97038 documents and 608033 words.

訪問者:カウンタValid HTML 4.01 Transitional