2

テキスト ボックス レポート コントロールの値を評価し、その値に基づいて非表示または表示したいと考えています。これは、VBA で簡単に実現できます。

If Me.Fixed.Value = 0 Then
    Me.Fixed.Visible = False
End If

それは問題なく動作しますが、レポートのレコード ソースとして使用しているクエリでは、一連のレコードを一度に (ページ/レポートごとに 1 つ) 印刷することができ、ページ/レポートごとに上記のコードを実行したいと考えています。各レコードがルールに従って再生されるようにコードを配置する場所がわかりません。現在、8 つのレコードの範囲を選択すると、最初のレコードのみが目的を果たし、印刷プレビュー画面で他のレコードをナビゲートすると、レポートの形式が変更されるべきときに変更されません。

次のイベントを試しました。

報告:

  • 現在の
  • ロード中
  • オン ガット フォーカス
  • オープン時
  • アクティベート時
  • ページ上

セクション:

  • オンフォーマット
  • 印刷時
  • ペイントについて

そのレポートで返されたレコードの範囲をスクロール/ナビゲートするたびにコードが実行されるように、VBA をどこに置くことができますか?

4

2 に答える 2

4

プロパティも Trueに設定する必要がありますVisible。そうしないと、非表示のままになります。

詳細セクションの Format イベントを使用しています。

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    If Me.Fixed = 0 Then
        Me.Fixed.Visible = False
    Else
        Me.Fixed.Visible = True
    End If
End Sub

これは印刷プレビューでは機能しますが、レポート ビューでは機能しません。これをレポート ビューで動作させる方法はおそらくあるのですが、私はこのビューを使用したことがありません。

このステートメントは次のように簡略化できます。

Me.Fixed.Visible = Not (Me.Fixed = 0)
于 2013-07-17T17:50:58.867 に答える
1

このVisibleプロパティはイベントでは使用できないことに注意してください。これは、レポート ビューDetail_Paint()で条件付き書式を適用するために使用する必要があるイベントです。(これは、ドリルダウン効果のためにシミュレートされたハイパーリンクなど、凝ったことをしようとしている場合に必要になる場合があります。)

回避策はForeColor、テキスト ボックスの を と等しくなるように設定することBackColorです。テキストは技術的にはまだ存在しますが、表示されたレポートには「表示」されないため、非表示のフィールドがシミュレートされます。

Private Sub Detail_Paint()
    ' Check for even numbers
    If (txtID Mod 2 = 0) Then
        txtID.ForeColor = vbBlack
    Else
        ' Set to back color to simulate hidden or transparent.
        ' (Assuming we are using a Normal BackStyle)
        txtID.ForeColor = txtID.BackColor
    End If
End Sub

出力例:

隠れた偶数に注意

于 2016-02-26T16:51:16.413 に答える