Microsoft Access 掲示板

レポート印刷ラベル時のキャンセル実行

2 コメント
views
4 フォロー

https://www.accessdbstudy.net/entry/20080614/p1

上記のサイトを参考に、下記コードでラベル印刷をしています。
そこでラベル印刷をしようと、下記コードを実行します。
目的自体は果たせるのですが、途中でキャンセルボタンを押したときの挙動がうまくいきません。

Private Sub cmd_ラベル印刷_Click()

    DoCmd.OpenReport "R_ラベル印刷", acViewPreview
    
End Sub

すると下記流れになります。

①「一部のデータが表示されません。」←プリンタからの警告?通常は無視してOKしています。
⇒ここで、キャンセルを押すと「実行時エラー2501 OpenReportアクションの実行は取り消されました」と表示されます。

②「印刷開始位置を入力してください…」
⇒ここでキャンセルを押しても、OKを押したときと同様レポート画面に進んでしまいます。

①②でキャンセルボタンを押した際、キャンセルできるようにするにはどうすればよいでしょうか。

Option Compare Database

Dim s_position As Integer

Private Sub Report_Open(Cancel As Integer)

'開始位置入力 全角OK 漢字等は0になるが結果的に最初の位置から印刷
s_position = Val(StrConv(InputBox("印刷開始位置を入力してください(1~)", , 1), vbNarrow))

End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

    '最初のレコードのときに開始位置を移動
    If Me.CurrentRecord = 1 And FormatCount < s_position Then
        Me.PrintSection = False
        Me.NextRecord = False
    Else
        Me.PrintSection = True
        Me.NextRecord = True
    End If

End Sub
ポンタ
作成: 2022/04/12 (火) 14:39:32
最終更新: 2022/04/12 (火) 15:27:48
通報 ...
1

①「一部のデータが表示されません。」←プリンタからの警告?通常は無視してOKしています。

レポートの幅が印刷範囲幅より大きいのではないでしょうか。
デザインビューでレポートの幅を、[用紙幅]-[左右余白]より小さくしてみてください。

⇒ここで、キャンセルを押すと「実行時エラー2501 OpenReportアクションの実行は取り消されました」と表示されます。

    DoCmd.OpenReport "R_ラベル印刷", acViewPreview
の前に、
    On Error Resume Next
を挿入するといいでしょう。

②「印刷開始位置を入力してください…」
⇒ここでキャンセルを押しても、OKを押したときと同様レポート画面に進んでしまいます。

①②でキャンセルボタンを押した際、キャンセルできるようにするにはどうすればよいでしょうか。

Private Sub Report_Open(Cancel As Integer)

    '開始位置入力 全角OK 漢字等は0になるが結果的に最初の位置から印刷
    '            [キャンセル]ボタンをクリック、または空欄の時は印刷しない
    Dim res As String
    res = InputBox("印刷開始位置を入力してください(1~)", , 1)
    If res = "" Then
        Cancel = True
    Else
        s_position = Val(StrConv(res, vbNarrow))
    End If
End Sub
2
ポンタ 2022/04/12 (火) 16:14:30 61d91@7c0be >> 1

バッチリうまくいきました。大変助かりました。
似たようなコードで一度実行していたのですが、(?)
引数のエラーが出ていました。
「Cancel = True」というのが必要だったのですよね。
ありがとうございました。