タイトル部分をクリックで簡単ソートする方法。開発18日目
![](https://mocabrown.com/blog/wp-content/uploads/936392628d923fa1b0676cdaf5131196.png)
MSAccessでアプリ作ってます。簡単にできて効果が高い、フォームのタイトル部分をクリックすると昇順、降順の並び替えが簡単にできるコードを自分のためにメモ。
つまり、こういうやつです。
![](https://i0.wp.com/mocabrown.com/blog/wp-content/uploads/936392628d923fa1b0676cdaf5131196.png?fit=525%2C229&ssl=1)
上の図はふりがな順になってますが、たとえば「お客様ID」のところをクリックすると、順番がソートされます。
![](https://i0.wp.com/mocabrown.com/blog/wp-content/uploads/e1e8ec9cc23ebda9c6d6f1306680024a.png?fit=525%2C201&ssl=1)
お客様IDの昇順になりました。もういちどクリックすると降順になります。こういうのはあると便利です。
![](https://i1.wp.com/mocabrown.com/blog/wp-content/uploads/6e54e6586ee5b7dc617ae49751d6f52a.png?fit=525%2C122&ssl=1)
じつは上のように同じAccessのフォームでも「データシート」形式を使えばあらかじめこのソートや検索機能はついてきます。けれど、ボタンを設置したり画像を表示したりができないので、複数のアイテム形式でもソート機能をつけるのが今回のテーマです。
タイトル部分はラベルでできています。まず、ここをクリックしたときにFunctionを動かす部分はこんな感じです。
Private Sub lbl_ふりがな_Click()
sortKey = "ふりがな"
labelSort (sortKey)
End Sub
sortキーはどのラベルをソートさせるのか区別するためにつけている変数です。labelsortファンクションに渡します。
Function labelSort(sortKey)
If Me.Form.OrderBy <> sortKey Or Me.Form.OrderBy = sortKey & " DESC" Then
With Me.Form
.OrderBy = sortKey
.OrderByOn = True
End With
Else
With Me.Form
.OrderBy = sortKey & " DESC"
.OrderByOn = True
End With
End If
End Function
本体はこんな感じです。
ここでラベルにつけていた変数が生きてきます。他のラベルにもソート機能をつけるには、クリックしたときにそのフィールドの名前をFunctionに渡してやるだけなので、ずらずらと以下のように機能を並べていきます。
Private Sub lbl_お客様ID_Click()
sortKey = "お客様ID"
labelSort (sortKey)
End Sub
Private Sub lbl_ふりがな_Click()
sortKey = "ふりがな"
labelSort (sortKey)
End Sub
Private Sub lbl_過去1年回数_Click()
sortKey = "過去1年回数"
labelSort (sortKey)
End Sub
Private Sub lbl_最終来店日_Click()
sortKey = "最終来店日"
labelSort (sortKey)
End Sub
Private Sub lbl_氏名_Click()
sortKey = "氏名"
labelSort (sortKey)
End Sub
Private Sub lbl_担当者_Click()
sortKey = "担当者名"
labelSort (sortKey)
End Sub
ディスカッション
コメント一覧
まだ、コメントがありません