VB6.0のMsFlexGridを使用して表を作っています。
その際にSortの使い方が理解できなかったので質問させてください。
---------------------------
A | 111 | 333 | 222 |
---------------------------
B | 1 | 3 | 2 |
---------------------------
↓
---------------------------
A | 111 | 222 | 333 |
---------------------------
B | 1 | 2 | 3 |
---------------------------
このようにしたいのですが、今の段階では↓のようになってしまいます。
---------------------------
A | 111 | 333 | 222 |
---------------------------
B | 1 | 3 | 2 |
---------------------------
↓
---------------------------
B | 1 | 3 | 2 |
---------------------------
A | 111 | 333 | 222 |
---------------------------
行内で昇順にソートしてほしいのですが、列内でソートしてしまうのです。
コードは以下の通りです。
-----------------------------------------
'選択範囲設定
grd.Col = 1
grd.ColSel = grd.Cols - 1
'昇順に並び替え
grd.Sort = 1
-----------------------------------------
grd.CellFontBold = True を使って選択されている範囲を確かめましたが、ここは問題なく1番上の行の数字の部分だけを選択されていました。
プロパティのSelectionModeとの兼ね合いも必要になってくるのでしょうか?
わかりにくい説明で申し訳ありませんが、よろしくお願いします。
VB6のヘルプで、「Sort プロパティ」 の解説を読んでみました。
#言い回しが分かり難く、最初に読んだ時意味を取り違えてしまいましたが・・・
要は「行の並び替え(上下を入れ替える)」為の機能で、
「行内の列を入れ替える(左右を入れ替える)」物じゃないですね。
以下、抜粋
------------------------------------------------
非固定型の行を並べ替えます。
並べ替えに使用されるキーは、Col および ColSel プロパティによって決定されます
------------------------------------------------
つまり、
> ---------------------------
> B | 1 | 2 | 3 |
> ---------------------------
> このようにしたいのですが
は、できそうにありませんね。
> grd.Col = 1
> grd.ColSel = grd.Cols - 1
コレは、「ソート用のキー項目の指定」になります。
つまり、「1列目の値で比較して行を並び替える、1列目が同じなら2列目の値で比較・・・・『Cols-1』列目の値で並びかける」
>>大吉末吉さん
わかり易く説明できなくて申し訳ありませんでした。
行内での並び替えはできないんですね。
並び替えるプログラムを作ろうと思います。
勉強になりました、ありがとうございました。
スイマセン、解決を忘れていました。
ツイート | ![]() |