2012-02-24 13 views
1

ExcelのVSTO 2010では、Range.Sortメソッドが動作しないようです。ここに私のコード例があります。列Aに番号1〜20を逆順に入れ、並べ替えに失敗します。VSTOでのRangeオブジェクトの並べ替え

Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet; 
Enumerable.Range(1, 20).ToList().ForEach(i => sheet.Cells[21 - i, 1] = i); 
sheet.Columns[1].Sort(); 

the documentationによると、引数なしでSortは、昇順にソートされます。場合によってはOrder1: XlSortOrder.xlAscendingを指定しようとしました。

私はまた、最初の列を選択するには、これはどちらか動作しませんでした

sheet.Columns[1].Select().Sort();

を試してみました。

セルのRangeをどのようにソートできますか?

+0

サンプルコードを実行するとどうなりますか? – phoog

+0

@phoogアクティブなワークシートの列Aに番号1〜20を逆順に置きます。しかし、昇順で並べ替えるわけではありません。 –

+0

昇順でソートするのではなく、何をしますか?私の答えに示されたVBAエラーのような例外がありますか? – phoog

答えて

1

私はVBAであなたのアプローチを試して、 "range classのソート方法が失敗しました"というエラーを受け取りました。

メソッドの "Key1"引数として範囲を渡すことで解決しました。重複しているようですが、うまくいきます。

Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet; 
Enumerable.Range(1, 20).ToList().ForEach(i => sheet.Cells[21 - i, 1] = i); 
sheet.Columns[1].Sort(sheet.Columns[1]); 
関連する問題