
アクセス初心者です。
バージョンは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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) VBA 1 2023/04/27 13:37
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESS フォームをそのまま印刷について
その他(データベース)
-
アクセスで特定のレコードのみのレポートを印刷したいのですが。
Access(アクセス)
-
Access2013 レポートを印刷するために開いた、レポートビューをVBAで閉じる方法を教えて。
その他(Microsoft Office)
-
-
4
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
5
accessのフォームに設置したボタンからレポートの印刷プレビューが表示されなくなった
Access(アクセス)
-
6
Accessでフィルタの実行アクションをクリアするには?
Access(アクセス)
-
7
Accessのフォームで、画面表示されているものを印刷する
Access(アクセス)
-
8
アクセスのレポートでレコード数をカウントしたい
その他(データベース)
-
9
ACCESSのレポートで、指定した数だけラベル印刷を行うには?
その他(データベース)
-
10
AccessVBAでのカラー印刷モード
Access(アクセス)
-
11
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
12
Accessのフォーマット時イベント
その他(データベース)
-
13
ACCESSで印刷プレビューをした後の印刷ボタンを押したイベント取得につて
その他(プログラミング・Web制作)
-
14
ACCESSのフォームからハイパーリンクで開く
Access(アクセス)
-
15
クエリ実行結果0件の場合のフォーム展開中止とメッセージ表示
Access(アクセス)
-
16
Accessでレポートの項目をVBAで変更したい
その他(データベース)
-
17
追加先の発見方法(SQL以外)
その他(データベース)
-
18
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
19
Accessのテーブルを開いたときに最後のレコードを表示させたい
Access(アクセス)
-
20
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルの文字を「印刷時だけ非表...
-
全部で奇数ページあるWordデー...
-
WORD2007で袋とじ印刷...
-
Excel フィルタをかけた後の各...
-
コンビニでpdfを四つで一つにし...
-
ファミマでPDFを両面印刷したの...
-
何もしていないのに印刷したら...
-
PDFに付された注釈を印刷するに...
-
ワードで年賀状
-
弥生販売06の領収書の日付修正
-
ホームページの全面を校正のた...
-
WORDのヘッダーフッダーの...
-
Excel 2013マクロ シート上の「...
-
現在の印刷ダイアログボックス...
-
スクロールバーの下が印刷出来...
-
印刷の方法
-
FinePrint使用時に自動で印刷さ...
-
illustrator 9 から CS3 に...
-
IE5.5 特定のフレームのみの印...
-
差込印刷のページ指定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セルの文字を「印刷時だけ非表...
-
Excel フィルタをかけた後の各...
-
エクセルで「白字」を印刷した...
-
コンビニでpdfを四つで一つにし...
-
PDF-XChange Editorのテキスト...
-
ワードの差込印刷部分の背景部...
-
何もしていないのに印刷したら...
-
ネットのページをPDFで保存して...
-
[Acrobat]注釈を埋め込む 注釈...
-
wordで印刷の頁順を変えたい
-
Accessのテーブル設計内容を印...
-
WORD 印刷すると文字が重なる
-
wordで白抜き文字を印刷するには?
-
ファミマでPDFを両面印刷したの...
-
表題、目次ページがある文書の...
-
Excel セル内に見たことのない...
-
文章を縦書きで印刷すると、!?...
-
ワードで背景の画像を印刷しな...
-
indeedのweb求人内容を印刷した...
-
Thunderbirdで選択個所だけの印刷
おすすめ情報