2017-01-27 18 views
0

私は列Aの値に基づいて並べ替える必要があるいくつかの行のデータを含むExcelスプレッドシートに取り組んでいます。列Bには、列Bにもあるスピナーによって制御される値が含まれます。VBA Spinnerで並べ替え

私がしようとしているのは、押されたときに、列Aに基づいてすべての行を並べ替えるが、スピナーを壊すことなくボタンを作成することです。私は単純なソート機能を使用する場合はスピナーとともに、必要に応じ

  • は、それが行を移動しますが、それはそうスピナー上のセル・リンクを更新しません:私がこれまで試してみました何

    彼らは古い質問の細胞につながったままです。

  • スピナーが押されたときに、スピナーのセルリンクを更新するスピナーについて、VBAの行に追加しようとしました。ここで問題となるのは、excelは、リンクを更新する前にスピンナーのインクリメント部分を最初に実行し、その結果、リンクを更新する前に古いセルをインクリメント/デクリメントすることです。

  • SORTマクロのVBAの行に、Forループを実行して、新しいTopleftcell値に基づいてすべてのスピナーセルリンクを更新しようとしました。これは、セルリンクでも機能しますが、移動した最後のスピナーのセル値と思われる値に基づいてセル値を更新します。言うまでもなく、これも問題です。

私はまだVBAで非常に経験の浅いので、他に何を試していいのか分かりません。

誰かがスピナーの値やリンクを壊さずにスピナーを含むセルをソートする提案があれば、私は非常に感謝しています!

ありがとうございます。詳細情報が必要な場合はお知らせください。これまで使用してきたコードのスニペットを含めることができますが、それは多くの人に役立つかどうかはわかりませんでした。

答えて

0

このようなものを試してください。

Sub SORT() 

    Range("A2:B4").SORT. Key1:=Range("A2"), Order:=xlAscending 
    Call SpinnerControl 

End Sub 



Sub SpinnerControl() 

Dim spn As Spinner 
Dim rng As Range 

    For Each spn In ActiveSheet.Spinners 
     Set rng = spn.TopLeftCell 
     spn.LinkedCell = rng.Address(external:=False) 
    Next spn 

End Sub 
関連する問題