Microsoft Access 掲示板

目次(索引)作成 / 7

39 コメント
views
5 フォロー
7
hiroton 2021/05/10 (月) 08:54:05 修正 245f0@f966d

「txt目次0~3」なら「0,1,2,3」の4段じゃないですか?

印刷時拡張を使って複数ページになるなら目次データの生成処理を初回の1回だけ処理するようにすればいいですね

それと、印刷時拡張かつ段組みとすると、30行ずつ3段目まで振り分けたらまた1段目に戻す必要がありますね

レポートフッター_Formatを次のように変更します

Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)
    Static isExecuted As Boolean
    Dim arr
    Dim s
    Const colCount = 3  '1ページの段数
    Const rowCount = 30 '1ページの行数
    Dim CNT As Long
    Dim colName As String

    If Not isExecuted Then
        '並び替えのために配列にする
        arr = Split(Data, vbCrLf)
        '配列を並び替え
        Call ArrayListSort(arr)
    
        '段組みに振り分ける
        CNT = 0
        For Each s In arr
            colName = "txt目次" & CNT \ rowCount Mod colCount
            Me(colName) = Me(colName) & s & vbCrLf
            CNT = CNT + 1
        Next
        isExecuted = True
    End If
End Sub
通報 ...
  • 8
    hiroton 2021/05/10 (月) 09:22:10 245f0@f966d >> 7

    それと、詳細セクションも複数ページにまたがることがあったりしますか?
    ページ跨ぎが発生すると詳細_Formatもその都度発生するので、dataに薬品名が重複して登録されます。こちらもページ跨ぎの場合はdataにデータを追加しない様、制御処理を追加しておいたほうがいいかもしれません

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