平素は皆様にご教授いただき、まことにありがとうございます。
リストボックス内で、時間で昇順にソートをかけたいと思い、サイトを巡回して似たようなものを見つけたので、少し変えて作ってみました。
結果として、エラーは出ずに、昇順ソートしてくれていますが、、以下のような問題に直面しています、、画像もお付けいたします。
1、2列目から1列目に寄ってしまう
2、ソートすると、1桁時刻と2桁時刻をわけてしまう
という感じです。
1次元配列(専門用語の理解とか使い方間違ってると思います。。。以下同じ)でなくて、2次元配
列で放り込む方法ってあるんでしょうか、、
よろしければ、ご教授いただければ幸いです。。
ABV
1Private Sub CommandButton12_Click() 2 Dim column1 As String 3 Dim column2 As String 4 Dim i As Long 5 6With CreateObject("System.Collections.ArrayList") 7For i = 0 To ListBox1.ListCount - 1 8column1 = ListBox1.List(i, 0) 9column2 = ListBox1.List(i, 1) 10 11.Add column2 12 13Next i 14 15.Sort 16 17ListBox1.Clear 18 19For i = 0 To .Count - 1 20 21ListBox1.AddItem .Item(i) 22 23Next i 24.Clear 25End With 26 27End Sub 28
add colimn2を入れてみましたが、見事に時刻と数字が一直線に並びました、
おそらくですが、、時刻が文字列なので、数値に変えて格納して、2列で格納出来たら解決するのかなと、、
よろしければ、ご教授いただけませんでしょうか、よろしくお願いいたします。
「8:20」ではなく「08:20」にしてはどうでしょうか?
ご回答ありがとうございます。あ、、そうですね、、、、やってみたいと思います。。
あと、2列で格納できるかどうかですが、、この点については解決可能なのでしょうか?
arrylistには、1次元でしか格納できないのでしょうか、、
「2列で格納」の意味がちょっと分かりませんでした。(”何を”2列にして”何に”格納するんでしょう?)
あ、失礼いたしました。
リストボックスにある
1列目 「氏名」のデータ
2列目の「時刻」のデータ
を
ArrayList に格納できるかということです、、
With CreateObject("System.Collections.ArrayList")
For i = 0 To ListBox1.ListCount - 1
column1 = ListBox1.List(i, 0)
column2 = ListBox1.List(i, 1)
.Add column1
.Add column2
とすると、ソートをかけると、結果として、1列縦隊で出力するので、なにか他に格納の方法があれば、、、ということでの質問です。
tmpが2次元配列だとすると、ListBox1.List = tmp で初期化できるようです。
すいません、、たびたびです、、構文としては、どう書けばいいのでしょうか、、よろしければ、教えていただけませんか、
下記リンクに具体例があります。(最後の方)
http://officetanaka.net/excel/vba/tips/tips158.htm
情報をいただきまして、まことにありがとうございます。
temp とはそういうことなのですね、、といいつつ、まだ理解できていませんが、、
回答2件
あなたの回答
tips
プレビュー