アプリ版:「スタンプのみでお礼する」機能のリリースについて

平素は皆様にご教授いただき、まことにありがとうございます。
リストボックス内で、時間で昇順にソートをかけたいと思い、サイトを巡回して似たようなものを見つけたので、少し変えて作ってみました。
結果として、エラーは出ずに、昇順ソートしてくれていますが、、以下のような問題に直面しています、、画像もお付けいたします。
 1、2列目から1列目に寄ってしまう
 2、ソートすると、1桁時刻と2桁時刻をわけてしまう
   という感じです。
  1次元配列(専門用語の理解とか使い方間違ってると思います。。。以下同じ)でなくて、2次元配  列で放り込む方法ってあるんでしょうか、、
  それと、列のみ削除するって可能なんでしょうか、、どこにも載ってないです、、いずれも。。
 よろしければ、ご教授いただければ幸いです。。毎回もうしわけございません。。
Private Sub CommandButton12_Click()
 Dim column1 As String
  Dim column2 As String
   Dim i As Long

With CreateObject("System.Collections.ArrayList")
For i = 0 To ListBox1.ListCount - 1
column1 = ListBox1.List(i, 0)
column2 = ListBox1.List(i, 1)

.Add column2

Next i

.Sort

ListBox1.Clear

For i = 0 To .Count - 1

ListBox1.AddItem .Item(i)

Next i
.Clear
End With

End Sub

「VBA基本構文の作り方 2列のリストボッ」の質問画像

質問者からの補足コメント

  • うーん・・・

    いましがた、リストビュアーなるものを見つけたのですが、これをリストボックスから置き換えることって可能なんでしょうか?

      補足日時:2020/10/10 20:19
  • うれしい

    今回も皆様にご指導いただいたこと、誠にありがとうございました。
    どうやら、リストビューを使うことが一番いいような感じです。
    今回もベストアンサーを選ばせて頂きますが、ご指導いただいた皆様に感謝申し上げます。

      補足日時:2020/10/11 15:59

A 回答 (5件)

こんばんは!



質問文を拝見すると
何か操作そのものを難しくしているような気がします。

ちなみに今回は単なるアドバイスになりますが・・・
自分であれば
どこか使っていない列を利用し、リストボックスに表示するデータを作成し
そこで昇順等の操作を行う → 必要行だけリストボックスに表示する!

といった流れにします。

※ 印刷するシートにその作業用の列を作成した場合は
「印刷設定」で印刷したい範囲だけを指定すればそこは印刷されません。m(_ _)m
    • good
    • 0
この回答へのお礼

毎度ご回答くださり、誠にありがとうございます。
 そうですね、、それが素直なやり方なのだろうと思いますが、ちょっと作ってみて、結構楽だなぁとは思います。自己満足かもしれませんが^^;
 
 ちなみにですが リストボックスをリストビュアーに置き換えるということは可能ですか?

お礼日時:2020/10/10 20:18

リストボックスからリストビューに変更をするのであれば、一度質問を閉じられた方が宜しいのでは?


今後の補足は本来の質問事項とは変わってくるかもですし。
    • good
    • 0
この回答へのお礼

あ、、そうですね、、
 ご提案ありがとうございます。

   そういたしますね

お礼日時:2020/10/11 15:53

ListViewコントロールの使い方


http://officetanaka.net/excel/vba/listview/

どのように使うものなのかを知り、置き換えられるかを判断する。

ただListBoxで悩んでいる(並び替えなど)のなら、置き換えても同じ悩みを持つだけではないかなと。
    • good
    • 0
この回答へのお礼

何度もお返事を頂きまして、申し訳ございません。
どうやら、見出しもつけられて、ソートもできるようです。やってみる価値はあるかなと思いますので、やってみます。
 情報までいただきまして、ありがとうございます。

お礼日時:2020/10/10 21:34

No.1です。



>リストボックスをリストビュアーに置き換える・・・

ごめんなさい。
当方は「リストビュアー」なるものを使ったコトがないので
※ 勉強不足で「リストビュアー」なるものがどんなものか判りません。

今回は全くお役に立てなくてごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

何度も返信いただきまして、恐縮です。
 なにやら、見出しもつけられて、ソートもできるようです、ちょっとやってみます。

お礼日時:2020/10/10 21:33

直接コードは書けませんので疑問点だけに対して。



>1、2列目から1列目に寄ってしまう

ArrayList に .Add column2 2列目だけ格納していれば取り出しても1列しか出せませんよ。

>2、ソートすると、1桁時刻と2桁時刻をわけてしまう

『わける』と言う表現とは違います。ただ単にListBoxに入っている値では『時刻』ではなく『文字列』であると言う事。
しかも格納する際にも文字列から時刻に変換はされてませんし。
ここはNo.1さんのアドバイスにもあるようにシートにリストを書き出して並び替えた方が、セルに入れられた『時刻みたいな文字列』をExcelは『時刻』と扱うと思います。
検証できないので絶対とは言えませんが多分そう認識すると思います。
並び替えた後にListBoxへ戻せば宜しいかと。
    • good
    • 0
この回答へのお礼

いつもご回答いただきまして、ありがとうございます。
付け加えてみたら、数字の後に名前が一直線になって出てきました。やっぱり、一列なんですかね、、あの中身って、、
 
 配列なんて見ていると、全身にじんましんが多発しておりますが、、
なんとか理解してみようと思います。

 数字で認識しない、、そうですよね、、言われてみたら、、

お礼日時:2020/10/10 21:32

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