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
レポートの幅が印刷範囲幅より大きいのではないでしょうか。
デザインビューでレポートの幅を、[用紙幅]-[左右余白]より小さくしてみてください。
DoCmd.OpenReport "R_ラベル印刷", acViewPreview
の前に、
On Error Resume Next
を挿入するといいでしょう。
バッチリうまくいきました。大変助かりました。
似たようなコードで一度実行していたのですが、(?)
引数のエラーが出ていました。
「Cancel = True」というのが必要だったのですよね。
ありがとうございました。