• 締切済み

リスト間のアイテム移動について - VBAで

http://okwave.jp/qa/q4903870.html を読んで、No.2の回答にあるようなコードをExcel2000のVBAで組みたいと思いました。VBではitemdataというプロパティがありましたがVBAではなかったようで、かわりにListプロパティなどを使ってみましたが、うまくいきません。アドバイスをお願いできますでしょうか? VBでの元のコードは以下のとおりです。 Private Sub Form_Load() With List1   .AddItem "FreeBSD"   .AddItem "Linux"   .AddItem "Macintosh"   .AddItem "MS-DOS"   .AddItem "Slaris"   .AddItem "Windows 95"   .AddItem "Windows CE"   .AddItem "Windows NT"   for n = 0 to .ListCount-1     .ItemData(n) = n   next End With としておきます リストの移動時に Private Sub Command1_Click()   dim m as Integer   m = 0   For i = List1.ListCount - 1 to 0 step - 1     If List1.Selected(i) = True Then       if list2.ListCount > 0 then         for m = 0 to List2.ListCount-1           ' ここで ItemData比較する           if list2.itemData(m) > list1.ItemData(i) then             exit for           end if         next       end if       ' 挿入位置が mに求められている       list2.additem List1.List(i), m       list2.ItemData(m) = List1.ItemData(i)       List1.RemoveItem i     End If   next End Sub

みんなの回答

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.1

Excel VBA は得意じゃないので、もっと良い方法があるかもしれませんが。 Private Sub Command1_Click()   Dim m As Integer   Dim i As Integer   m = 0   For i = List1.ListCount - 1 To 0 Step -1     If List1.Selected(i) = True Then       If List2.ListCount > 0 Then         For m = 0 To List2.ListCount - 1           ' ここで ItemData比較する           If List2.List(m, 1) > List1.List(i, 1) Then             Exit For           End If         Next       End If       ' 挿入位置が mに求められている       List2.AddItem List1.List(i), m       List2.List(m, 1) = List1.List(i, 1)       List1.RemoveItem i     End If   Next End Sub Private Sub UserForm_Initialize()   Dim n As Integer   With List1     .AddItem "FreeBSD"     .AddItem "Linux"     .AddItem "Macintosh"     .AddItem "MS-DOS"     .AddItem "Slaris"     .AddItem "Windows 95"     .AddItem "Windows CE"     .AddItem "Windows NT"     For n = 0 To .ListCount - 1       .List(n, 1) = n     Next   End With End Sub Excel2007 で 動作確認しました。

すると、全ての回答が全文表示されます。

関連するQ&A