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で効率化さん)
動作確認していないので問題があったら教えてください。
それと、「薬品名」はすべて五十音ですか?「葛根湯」とかあると、漢字はすべてカナの後とかなったりします
通報 ...