[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/06/25(Sat) 14:22
投稿者名:ゆうり
Eメール:
URL :
タイトル:
スプレッドのソートについて
いつも御世話になります。
スプレッド(SPREAD2.5J)を使用しています。
スプレッド上に表示させるデータを、スプレッドの
ソート機能にて実現させようとしています。

スプレッドデザイナーで、シートの列(現在実施は2列目をKeyに全行)に対して、
昇順でソートを設定したいのですが、デザイナー上で設定が有効に
なりません。
「実施手順」
 1.スプレッドデザイナーで設定を行う。
 (1)スプレッドデザイナーを起動し、シート上のソート対象列を
    選択し、「設定」⇒「シートのソート」⇒「シート情報の設定」にて
    ソートKey1に、”2”を設定し、OKとする。
 (2)再度、スプレッドデザイナーを起動し、設定内容を確認すると
    (1)で設定した値が元に戻ってしまう。

 2.VBのコードで記述を試みる。
    ※基本的にコードがわからず。(ヘルプが無いので手探りです)
     SortBy、SortKey、SortKeyOrder の3つのプロパティがあったので
     3種類で模索中です。
 (1)ケースA:以下のように記述
   .SortKey = 2
    コンパイルエラー:引数は省略できません。 となる。
 (2)ケースB:以下のように記述
   Dim sort_col As Long
   sort_col = 2
   .SortKey (sort_col)
    コンパイルエラー:プロパティの使い方が不正です。 となる。
 (3)ケースC:以下のように記述。
   Dim sort_col As Long
   sort_col = 2
   .SortKeyOrder (sort_col) 
    コンパイルエラー:プロパティの使い方が不正です。 となる。
 (4)ケースD:以下のように記述。
   Dim sort_col As Long
   sort_col = 2
   .SortBy = sort_col
    初めてコンパイルエラーでは無くなるが、2列目でのソートがされない。
    (というか、ソートされていない)

どこか、ケアレスミスがあるかと存じますが、ご指摘いただければ幸いです。
よろしく御願いいたします。

投稿時間:2005/06/25(Sat) 15:41
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: スプレッドのソートについて
>     ※基本的にコードがわからず。(ヘルプが無いので手探りです)

ヘルプが無い理由は問いませんが、調べる方法はいくらでもあるでしょうが。
  
  hhttp://tinyurl.com/cvxva

この他メーカのHPのQ&Aにも多分記載があるかと?
hhttp://www.grapecity.com/japan/Support/product_faq_search.asp?product=261

投稿時間:2005/06/26(Sun) 21:40
投稿者名:ken
Eメール:
URL :
タイトル:
Re: スプレッドのソートについて
SSのソートは3段階ソートの設定が行なえますので、

.Col=-1 (シート内全てを並べ替えの範囲に指定)
.Row=-1
.SortKey(1)=2   (2列目のセル)
.SortKeyOrder(1)=SS_SORT_ORDER_ASCENDING  (昇順で並べる)
.SortBy=SS_SORT_BY_ROW  (行単位で並べ替え)
.Action=SS_ACTION_SORT  (並べ替えを実行)

だったと思います。

投稿時間:2005/06/27(Mon) 13:20
投稿者名:ゆうり
Eメール:
URL :
タイトル:
Re^2: スプレッドのソートについて
kenさん、花ちゃんさん
皆様、ご返答ありがとうございました。

花ちゃんさん
 調査が足りず申し訳ありませんでした。

kenさん
 ご教示いただいたコードを用いて確認してみました。
 申し訳ありませんが、まだ実現できておりませんのでアドバイス
 御願いいたしたく。

 ご教示のコードで試したところ、
  まず、SS_SORT_ORDER_ASCENDING が『変数が定義されていません』
  とコンパイルエラーとなる。
   ⇒花ちゃんさんの情報にも同様の内容がありましたが、解決策が理解できません
    でしたので御確認させていただいている次第です。
  他、SS_SORT_BY_ROW 、SS_ACTION_SORT も同様となったので、
  以下のように宣言実施し、変数に値を代入。
   Dim SS_SORT_ORDER_ASCENDING As Integer
     Dim SS_SORT_BY_ROW As Integer
     Dim SS_ACTION_SORT As Long
   SS_SORT_ORDER_ASCENDING = 1
     SS_SORT_BY_ROW = Rowcnt   'Rowcntには、スプレッドで表示させる最大行を取得した変数
   SS_ACTION_SORT = ???   
    'SS_ACTION_SORTの変数に何を設定すれば良いか?が判らず、
    ソートが行えません。
   宣言、設定の値に不備があるとは思いますが、ご指導いただけますよう
   御願いいたします。

投稿時間:2005/06/27(Mon) 14:35
投稿者名:ゆうり
Eメール:
URL :
タイトル:
【解決しました】Re^3: スプレッドのソートについて
先ほど投稿させていただきましたが、その後以下のコードで実現
しましたので、御報告させていただきます。

先ほど不明だった宣言、設定は以下のように記述しました。
============================================
'スプレッドシートの操作機能 (Action プロパティ)
Public Const SS_ACTION_SORT = 25
'ソート順序[昇順/降順] (SortKeyOrder プロパティ)
Public Const SS_SORT_ORDER_ASCENDING = 1
'ソート対象[列/行] (SortBy プロパティ)
Public Const SS_SORT_BY_ROW = 0
============================================
すると、先ほどkenさんにご教示いただいたコードで実現の確認が
とれました。

kenさん、それに初めにご教示いただいた 花ちゃんさん、
本当にありがとうございました。

      .Col = -1                                   '(シート内全てを並べ替えの範囲に指定)
      .Row = -1
      .SortKey(1) = 2                             '(2列目のセル)
      .SortKeyOrder(1) = SS_SORT_ORDER_ASCENDING  '(昇順で並べる)
      .SortBy = SS_SORT_BY_ROW                    '(行単位で並べ替え)
      .Action = SS_ACTION_SORT                    '(並べ替えを実行