[リストへもどる]
一括表示

投稿時間:2004/02/28(Sat) 15:51
投稿者名:ゆーみん
Eメール:
URL :
タイトル:
MSHFlexGrid 桁区切りでのソート
すいません。過去ログ等を検索したのですが、
分からなかったので質問させてください。

MSHFlexGridに数値が入っていて、それらの数値には「三桁区切り
のカンマ」書式設定(#,###)が付いています。
これらをMSHFlexGrid1.Sort = 1 等を実行して、
「ソート」して昇順・降順にしたいのですが、「文字」として
認識しているようで、「数値」としての昇順・降順になりません。

一旦その列に入っている数値の書式をクリアして、ソートして、
また書式を付けるといった方法も考えるのですが、
もっと便利な方法はあるのでしょうか?

よろしくお願い致します。

投稿時間:2004/02/28(Sat) 18:20
投稿者名:dai
URL :
タイトル:
Re: MSHFlexGrid 桁区切りでのソート
daiと申します。

> MSHFlexGridに数値が入っていて、それらの数値には「三桁区切り
> のカンマ」書式設定(#,###)が付いています。
> これらをMSHFlexGrid1.Sort = 1 等を実行して、
> 「ソート」して昇順・降順にしたいのですが、「文字」として
> 認識しているようで、「数値」としての昇順・降順になりません。

MSDNのヘルプを参照してみてください。
Sortプロパティについて記述してあると思いますので。

投稿時間:2004/02/29(Sun) 02:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSHFlexGrid 桁区切りでのソート
あまりいい方法はないみたいですね。

処理速度の比較は行っておりませんのでどちらが速いかは?ですが
データの件数にもよると思いますので一度比較してみて下さい。
カスタムソートもありかなとは思ったのですが前回試した時に処理が
遅かったので試しておりません。
Private Sub Command1_Click()
    Dim strClipDat As String
    With MSFlexGrid1
        .Visible = False                '表示を非表示に
        .Row = .FixedRows               '選択範囲の行のスタート位置
        .Col = 3    '3列目をソート      '選択範囲の列のスタート位置
        .RowSel = .Rows - .FixedRows    '行のエンド位置
        strClipDat = .Clip              'データ1列分取得
        .Cols = .Cols + 1               '列を1列増やす
        
         strClipDat = Replace(strClipDat, ",", "")  ' , を取り除く
        .Row = .FixedRows               '選択範囲の行のスタート位置
        .Col = .Cols - 1                '選択範囲の列のスタート位置
        .RowSel = .Rows - .FixedRows    '行のエンド位置
        .Clip = strClipDat              '増やした列にデータをコピー
        
        .Sort = flexSortNumericAscending    'その列をソート
        
        .Cols = .Cols - 1               '増やした列を削除
        
        .Visible = True
    End With
End Sub

投稿時間:2004/03/02(Tue) 10:56
投稿者名:ゆーみん
Eメール:
URL :
タイトル:
解決: MSHFlexGrid 桁区切りでのソート
dai様、花ちゃん様、ご返答有難う御座います。

現在のデータは1万行×5列程度入っているのですが、
花ちゃん様の方法で、スピードのほうも気にならない程度に
出来ましたので解決です。

本当に有難う御座いました。