プロが教えるわが家の防犯対策術!

こんにちは。
アクセスで各レコードの印刷部数がそれぞれ異なるため、各レコードに入力した(フォームから)部数指定で
看板を印刷するようVBAを入力したところ。。。フォーマット時の方でIfブロックに対する End Ifがありませんとコンパイルエラーが出てEnD Ifが反転しています。

VBA初心者で、このVBA事態もネットで調べてコピペしたもので。。。エラー事態を自力で直せません。。。宜しくお願いいたします。

レポートの詳細にテキストボックスを置き名前-[cut]/可視-[いいえ[/コントロールソース-[=1]/
集計実行-[グループ全体]
詳細のプロパティ
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Forms![フォーム名]![部数指定フィールド名]
If IsNull([cut]) Then
[cut] = 1
If [cut] <> 指定枚数 Then
Me.NextRecord = False
Me.MoveLayout = True
Me.PrintSection = True
End If
End Sub

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Forms![フォーム名]![部数指定フィールド名]
If [cut] <> 指定枚数 Then
[cut] = [cut] + 1
Else: [cut] = 1
End If
End Sub

宜しくお願いいたします。

A 回答 (5件)

もしかして、こんな事をやりたいのでは?


レポート印刷で印刷部数をフォーム上で指定する方法:SampleFile146
http://www.accessclub.jp/samplefile/samplefile_1 …
勘違いならご容赦。

この回答への補足

調べて頂き、回答ありがとうございます。
例えば、品物が20台の注文が入った時、ワゴンには10台までしか乗らないため同じ看板を2枚必要です。
注文個数は一つ一つバラバラなので、1レコード1注文入力するとして。。。レコード単位で部数指定したいと思っています。
現在、看板ボタンをクリックするとすべて1部づつとしてのプレビューが出ます。
私が参考にしたホームページは
http://support.microsoft.com/kb/404902/ja
です。
宜しくお願いします。

補足日時:2013/06/04 12:35
    • good
    • 0
この回答へのお礼

こんばんは、nicotinismさん。
イメージに近いホームページを探して頂いて有難うございました。
>※イメージ的に
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
が近いような気もしますけど?ハズレ?

上記のものを試してみたら望み通りにいきました。。。
数年悩んでいた物が解決しすごく感謝しています。
有難うございました。

お礼日時:2013/06/05 20:11

すみません。

『看板』の意味というか概念がぼんやりとしか分かりません。
例えば
品物テーブル
品物ID 品物名 単価 最大入数(ワゴンに詰め込める最大数)
 1   パン  100  3
 2  ミルク  200  2

出庫テーブル
品物ID 品物名 数 出庫日
 1   パン  4 2013/6/4
 2  ミルク  4 2013/6/4
みたいなもの(かなり簡略化してますが)があったとして最終的にレポートで
どのようになったら良いのでしょう?
(深読みしすぎ?)
元のデータと出力レポートの例を示してもらえませんか。

※イメージ的に
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
が近いような気もしますけど?ハズレ?

とりあえず
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Forms![フォーム名]![部数指定フィールド名]
If FormatCount < 指定枚数 Then
Me.NextRecord = False
Me.MoveLayout = True
Me.PrintSection = True
End If
End Sub
をお試しを。
(詳細_Printの方は無効(コメントアウト)しておいて)

この回答への補足

回答ありがとうございます。紹介していただいたホームページも試してみます。

説明不足ですいません。
受注ID 出庫日 品名 個数 看板表示個数 単価 部数(看板) 引当先
1    6/5  パン  5   5      100   1
2    6/8  ミルク 20  10/20   200   2
引当客ID 引当客先
1     田中
2     鈴木
があり引当客IDと受注IDで1対多でリレーションしてあります。
看板形態は、出庫日 品名 看板表示個数 引当先が1枚に載っています。
現在では、1レコード1部づつですが、部数指定したいと思っています。

回答下さったものを試してみましたが、マクロ実行エラーが出てしまいました。

宜しくお願いいたします。

補足日時:2013/06/05 12:39
    • good
    • 0
この回答へのお礼

補足へ入力出来なかったのでお礼の所へ入力します。
間違えました。
引当IDと引当先で1対多のリレーションでした。
すいません。

お礼日時:2013/06/05 12:43

If IsNull([cut]) Then


[cut] = 1

上記の2行を2行に分けず

If IsNull([cut]) Then [cut] = 1

と書けば動くのでは?
    • good
    • 0

「◇」は「同じ番号の◆」に対応します。



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

◇2⇒If IsNull([cut]) Then

◇3⇒If [cut] <> 指定枚数 Then

◆3⇒End If

◆1⇒End Sub

あれ?「◇2」に対応する「同じ番号の◆2」がありませんよ?
    • good
    • 0

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


の中では、Ifが2つあるのにEnd Ifが1つしかないからエラーになっています。
End If1つで2つのIfが終了するわけではありませんよ。

この回答への補足

みなさん有難うございます。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Forms![フォーム名]![部数指定フィールド名]
If IsNull([cut]) Then
[cut] = 1
Else
If [cut] <> 指定枚数 Then
Me.NextRecord = False
Me.MoveLayout = True
Me.PrintSection = True
End If
End Sub
としてみました。すると。。。今度はIf [cut] <> 指定枚数 Then の<>がエラーで反転してしまいました。
この部分を
[cut] = [cut] <> 指定枚数 Then
と改造しましたが。。。ドツボにハマったようです。
素人で申し訳ありません、よろしくお願いします。

補足日時:2013/06/03 18:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!