
アクセス初心者です。
バージョンは2002を使っています。
ネットで探して詳しく分からないままプログラムしています。
フォームで印刷のコマンドボタンを作ってそのボタンをクリックすると表示されてる
1ページのみ印刷したいのですが全てのレコードが印刷されてしまいます。
どうすればいいのか教えて下さい。
下記が今現在のVBAです。
Private Sub 印刷_Click()
Dim varCopies As Variant
varCopies = InputBox("部数を数字で入力してください", "印刷部数の指定")
If Len(varCopies) = 0 Then
Exit Sub
End If
If IsNumeric(varCopies) = False Then
MsgBox "部数は数字で入力してください", vbOKOnly + vbCritical, "入力エラー"
Exit Sub
ElseIf CLng(varCopies) = 0 Then
MsgBox "部数は0以上で入力してください", vbOKOnly + vbCritical, "入力エラー"
Exit Sub
End If
If MsgBox("印刷しますか?" & vbCrLf & "部数=" & varCopies _
, vbYesNo + vbInformation, "印刷の確認") = vbYes Then
DoCmd.OpenForm "伝票", acPreview, , , acFormReadOnly
DoCmd.PrintOut acPrintAll, , , , CLng(varCopies)
DoCmd.Close acForm, "伝票"
End If
End Sub
No.5ベストアンサー
- 回答日時:
No.4 です。
> ただ本当はもっと簡単でいいので下記に変更してみたのですが
どう簡単でいいのか、他人には分かりませんよ。
> メッセージボックスまではうまくいくのですが「はい」をクリックするとエラーになってしまいます。
エラーと言っても、いろいろです。
コンパイルエラー、実行時エラーの別、
エラー番号、エラーメッセージ を 正確に書くようにしましょう。
回答する側にとっては、書かれていること以外は見えないのですから。
まあ今回はおまけ。
印刷を確認して、
「はい」 なら1部印刷する、ということとします。
Private Sub 印刷_click()
If MsgBox("印刷してよろしいですか?", vbYesNo, "印刷の確認") = vbYes Then
DoCmd.PrintOut acSelection
Else
End If
End Sub
エラーの原因は
varCopies に 0 より大きい数値を代入する過程を削除してしまったため
CLng(varCopies) の値がゼロであること。
印刷部数は 1以上でなければいけません。
省略すると、1とみなされます。
なお
> Res = MsgBox("印刷してよろしいですか?", vbYesNo, "印刷の確認")
変数、 Res、varCopies ともに宣言されていない状態になっていますね。
CLng(varCopies) を削除し忘れるようなエラーは
Option Explicit
を、モジュールの先頭に記述することで、簡単に気付くことができます。
VBE の [ツール] - [オプション:] - [編集]タブ で
「変数の宣言を強制する」 にチェックを入れておくとよいでしょう。
No.4
- 回答日時:
確認ですが、
この 「印刷」 ボタンは 「伝票」 フォーム上にあるんですよね?
だったら、プレビューを開く必要はありません。
acSelection を指定することで、現在表示されているレコードが印刷されます。
If MsgBox("印刷しますか?" & vbCrLf & "部数=" & varCopies _
, vbYesNo + vbInformation, "印刷の確認") = vbYes Then
DoCmd.PrintOut acSelection, , , , CLng(varCopies)
End If
変更したらうまくいきました!!
ネットで探してそのままコピペしたのもので何が何やらでした。
ありがとうございます。
ただ本当はもっと簡単でいいので下記に変更してみたのですが
メッセージボックスまではうまくいくのですが「はい」をクリックするとエラーになってしまいます。
Private Sub 印刷_click()
Res = MsgBox("印刷してよろしいですか?", vbYesNo, "印刷の確認")
If Res = vbYes Then
DoCmd.PrintOut acSelection, , , , CLng(varCopies)
Else
End If
End Sub

No.2
- 回答日時:
DoCmd.PrintOut acPrintAll, , , , CLng(varCopies)
ここで acPrintAll にしているから、全ページが印刷されるのは、あなたの仕様どおりです。
特定のページだけ印刷したいのなら、このオプションを acPages にして、その後のオプションで印刷開始のページと終了のページを指定します。
acPages,1,1,,CLng(varCopies)
という具合かな。実は、このメソッドは使ったことほとんど無いのですが。
あるいは、OpenForm メソッドのところで、欲しいレコードだけ選んで、それをacPrintAllで全部印刷してもいいと思います。
それから、質問するなと言っているわけじゃありませんが、こういうオプションの意味みたいなことはヘルプに全部書いてありますから、そっち見たほうが早いですよ。だって、ここで質問したって、すぐに答が返ってくるわけじゃないでしょう?ヘルプ見れば30秒で解決です。
カーソルをPringOutにおいて、F1を押せば、ヘルプのこの項目が開きます。
そうなんですか。
ネットで探してそのままコピペしたのもので何が何やらでした。
ありがとうございます。
ヘルプも見るのですがよく分からなくて。。。
細かい単語(?)で何となくはわかるのですがそれをどう組み合わせればいいのかが分かりません。
もっと勉強しないとダメですね。
これとは別にテキストボックスに検索文字を入れてボタンをクリックしたらフォームに表示されるところまでは何とかしましたがその指定したレコードだけを全て印刷するにはどうしたらいいのでしょうか?
すいませんが宜しくお願い致します。
No.1
- 回答日時:
>>DoCmd.PrintOut acPrintAll
だから、全ページが印刷されているんです。
acPrintAll ではなく acPages を指定して、<開始ページ>,<終了ページ>を指定します。
1ページ目だけでいいのであれば
DoCmd.PrintOut acPages,1,1, , CLng(varCopies)
そうなんですか。
ネットで探してそのままコピペしたのもので何が何やらでした。
ありがとうございます。
本当はもっと簡単でいいので下記に変更してみたのですが
メッセージボックスまではうまくいくのですが「はい」をクリックするとエラーになってしまいます。
Private Sub 印刷_click()
Res = MsgBox("印刷してよろしいですか?", vbYesNo, "印刷の確認")
If Res = vbYes Then
DoCmd.PrintOut acSelection, , , , CLng(varCopies)
Else
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access2013 レポートを印刷するために開いた、レポートビューをVBAで閉じる方法を教えて。
その他(Microsoft Office)
-
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
ACCESS フォームをそのまま印刷について
その他(データベース)
-
-
4
Accessでレポートの項目をVBAで変更したい
その他(データベース)
-
5
Accessでフィルタの実行アクションをクリアするには?
Access(アクセス)
-
6
アルファベットの入った文字列の抽出の仕方について。
Excel(エクセル)
-
7
AccessVBAでのカラー印刷モード
Access(アクセス)
-
8
ACCESSのフォームからハイパーリンクで開く
Access(アクセス)
-
9
アクセスのレポートでレコード数をカウントしたい
その他(データベース)
-
10
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
11
アクセスのレポートのヘッダーを2ページ以降にもつけるには?
Access(アクセス)
-
12
Accessのテーブルを開いたときに最後のレコードを表示させたい
Access(アクセス)
-
13
追加先の発見方法(SQL以外)
その他(データベース)
-
14
ACCESS更新クエリで型変換エラー
Access(アクセス)
-
15
ACCESS DCOUNTの抽出条件について
Access(アクセス)
-
16
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
17
access マクロでのフィルタの解除の方法
Access(アクセス)
-
18
データベースの最適化をマクロでしたい
その他(データベース)
-
19
Access2010 「演算子がありません」エラー
その他(データベース)
-
20
Accessのクエリでハイパーリンクの作成したい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルの文字を「印刷時だけ非表...
-
Excel フィルタをかけた後の各...
-
コンビニでpdfを四つで一つにし...
-
コメント表示しない形でのワー...
-
エクセルで「白字」を印刷した...
-
違うページが印刷される
-
Adobe Acrobatで四角形を書いて...
-
Excel2007 罫線を細くするため...
-
Accessのテーブル設計内容を印...
-
かんたんPDF EDITで文字を書き...
-
とびとびで印刷がしたい
-
隠し文字? の印刷
-
PDF-XChange Editorのテキスト...
-
WORD 印刷すると文字が重なる
-
ワードの差込印刷部分の背景部...
-
VBA チェックボックスで印刷ペ...
-
Thunderbirdで選択個所だけの印刷
-
画面上の表示と印刷内容が違う...
-
ワードでオートシェイプの印刷...
-
賃金台帳の保存期間については...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セルの文字を「印刷時だけ非表...
-
Excel フィルタをかけた後の各...
-
エクセルで「白字」を印刷した...
-
何もしていないのに印刷したら...
-
コンビニでpdfを四つで一つにし...
-
PDF-XChange Editorのテキスト...
-
[Acrobat]注釈を埋め込む 注釈...
-
ファミマでPDFを両面印刷したの...
-
ワードの差込印刷部分の背景部...
-
wordで白抜き文字を印刷するには?
-
WORD 印刷すると文字が重なる
-
wordで印刷の頁順を変えたい
-
ネットのページをPDFで保存して...
-
コメント表示しない形でのワー...
-
ワードで背景の画像を印刷しな...
-
エクセルのみで長3封筒に宛名...
-
表題、目次ページがある文書の...
-
画面通りに印刷されず(Word2013)
-
Accessのテーブル設計内容を印...
-
Edge、[画面で選択されたとおり...
おすすめ情報