0

これはスタック オーバーフローを使用した初めての投稿ですが、存在する vba 知識の素晴らしいデータベースを確実に利用しています。助けを求める目的を簡単に紹介し、それに伴うコードをリストします。

名前、勤続年数、シフト、試験会場、会社での役職からなる従業員のリストを渡され、週末の残業のために従業員のリストを作成するように求められました。ユーザーが入力した土曜日と日曜日の値と、希望する勤務時間などに基づいてリストを生成することができました。現在、週に変更される 7 つの優先度のリストに基づいて並べ替え関数を作成し始めています。週。

ユーザーがボタンをクリックすることに基づいてコメントボックスを変更するコマンドボタンを作成できる素晴らしい投稿を見つけました。最初のクリックで「Site Priority On」が表示され、2 回目のクリックで「Site Priority Off」が表示されます。その後、クリックするたびに前後に変化し続けます。最初にクリックすると、ユーザーが入力できる優先順位のカスタム リストに基づいて並べ替えるマクロが実行され、2 回目のクリックで、リストを元のレイアウトに戻すマクロが実行されます。クリックするたびに、1 つの並べ替えから別の並べ替えへと続きます。

これで、ボタンが何回押されても、2 番目のマクロはすべて正常に機能します。ただし、私の customsort リストは、最初のクリックで降順でしか機能しません。ボタンが優先度に基づく並べ替えに戻った後、列リストの降順から、優先度の低いものから優先度の高いものへとリストを昇順で並べ替えます。カスタムソート順を削除するコードを追加して、マクロを実行するたびに再作成しようとしましたが、最初の実行後も昇順に切り替わり続けます。

コマンドBUttonのコードは次のとおりです。

Private Sub CommandButton4_Click()

Select Case CommandButton4.Caption
    Case "Site Priority Off"
      Call PrioritySort
      CommandButton4.Caption = "Site Priority On"
    Case "Site Priority On"
      Call SortOff
      CommandButton4.Caption = "Site Priority Off"
  End Select
End Sub

カスタムソートのコードは次のとおりです。

Sub PrioritySort()


  ActiveWorkbook.Worksheets("Preliminary List").Sort.SortFields.Clear
  Range("S12:Z55").Select
  Application.AddCustomList (Range("T3:T9"))
  Selection.Sort key1:=Range("V12:V55"), OrderCustom:=6, Header:=xlYes, _
  MatchCase:=False, Orientation:=xlTopToBottom

end sub

コマンド ボタンを使用して 2 回目の並べ替えを実行すると、手動で並べ替えオプションを開き、レベルが並べ替え順序について何を示しているかを確認しました。最小から最大、最大から最小、降順のカスタム ソート リスト (通常は 3B、6、7、3E など)、カスタム ソート リストの昇順 (常に同じリストですが、3E、7、 6, 3B) とカスタム ソート (通常のオプション)。

コードが 2 回実行された後に降順から昇順に変更される理由を考えられる人はいますか? そして、2回目のクリックの後、何回実行しても常に昇順を選択するのはなぜですか.

ありがとう

4

1 に答える 1