Microsoft Access 掲示板

目次(索引)作成 / 1

39 コメント
views
5 フォロー
1
hiroton 2021/05/06 (木) 12:26:17 9f9a7@f966d

レポートフッターにテキストボックス「txt目次」を作成

Me.Page = 0関係はヘッダーに出力したいとき用のテクニックなので消してしまいましょう

薬品名を五十音順に並び替える

フッターに出力するタイミングで並び替えの処理が必要ですね。また、段組みにするのは並び替えの後の必要があるので、詳細_Formatのタイミングではデータを拾うだけでよさそうです

Option Compare Database
Option Explicit
Dim data As String

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    data = data & Left(Me!薬品名 & String(12, "・"), 12) & Format(Me.Page, "@@@") & vbCrLf
End Sub

Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer)
    Dim arr
    Dim s
    Const RowCount = 30
    Dim CNT As Long

    '並び替えのために配列にする
    arr = Split(data, vbCrLf)
    '配列を並び替え
    Call ArrayListSort(arr)

    '段組みに振り分ける
    CNT = 0
    For Each s In arr
        Me("txt目次" & CNT \ RowCount) = Me("txt目次" & CNT \ RowCount) & s & vbCrLf
        CNT = CNT + 1
        If CNT >= 120 Then Exit For 'RowCount * 4
    Next
End Sub

Sub ArrayListSort(ary() As Variant)
    Dim aryList As Object
    Dim s
    
    '// .NET FrameworkのArrayListクラスを利用する
    Set aryList = CreateObject("System.Collections.ArrayList")

    For Each s In ary
        Call aryList.Add(s)
    Next
    Call aryList.Sort
    ary = aryList.ToArray
End Sub

並び替えの方法はいろいろあります。楽そうな方法を公開しているサイトがあったのでそちらから借りてきました。VBAの配列を.NETのArrayListのSortで並べ替え(Excel作業をVBAで効率化さん)

動作確認していないので問題があったら教えてください。
それと、「薬品名」はすべて五十音ですか?「葛根湯」とかあると、漢字はすべてカナの後とかなったりします

通報 ...