1

MS Access 2007 では、プリンターの制限により、ユーザーごとにレポート ヘッダーに異なる色設定が必要になるという問題があります。すべてのレポートに含まれるレポートとページ ヘッダーの色を変更する手段をプログラムで確立しました。ただし、レポートの約半分にはグループ レベルのヘッダーが含まれています。私の質問は、.AllReports コレクション内のレポートのグループ レベル ヘッダーのインスタンスをどのように識別できるかということです。

Private Sub ChangeHeaderColor(ByVal blnIsObjectLoaded As Boolean, _
                              ByVal intCounter As Integer, _
                              ByVal strObjectName As String, _
                              ByVal strObjectType As AcObjectType, _
                              ByVal lngHexColor As Long)

On Error GoTo OpenAllReports_Error

Dim rpt As Report

If blnIsObjectLoaded = False Then
    DoCmd.OpenReport strObjectName, acDesign, , , acHidden
    If intCounter < Reports.Count Then
        If IsNull(Reports.Item(intCounter).Section(acGroupLevel1Header)) Then
            Set rpt = Reports.Item(intCounter)
            rpt.Section(acGroupLevel1Header).BackColor = lngHexColor
        End If
    End If
End If

...

問題は、GroupLevel ヘッダーを持つレポートのみを識別する正しい If ステートメントを定義することです。2462 ランタイム エラー - 「入力したセクション番号は無効です」をキャプチャする以外の方法を認識していません。

4

1 に答える 1

0

「オブジェクトが存在するものを検出する」に提供されているソリューションと同様のエラーコードをトラップすることにしました。詳細については、Access Cookbook 第 2 版の質問 7.1 を参照してください。

`Function ReportSectionExists(ByVal intIndex As Integer, ByVal intSection As Integer) As Boolean

Dim strName As String

On Error GoTo HandleErr

strName = Application.Reports.Item(intIndex).Section(intSection).Name

ReportSectionExists = True

HandleErr:
'No error, the Report.Section exists.
If Err.Number = 0 Then
    ReportSectionExists = True

'Error: The section number you entered is invalid.  The Report.Section does not exist.
ElseIf Err.Number = 2462 Then
    ReportSectionExists = False

'Unexpected error.
Else
    Dim ReportErr As Integer
    ReportErr = MsgBox(Err.Number & " - " & Err.Description & " The Section for this Report will be recoded as not availabele.  Do you want to continue?", vbYesNo)
    If ReportErr = 6 Then
        ReportSectionExists = False
    Else
        Exit Function
    End If
End If

End Function
于 2013-10-09T18:19:39.117 に答える