こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

アクセスIfブロックに対応するEnd Ifエラ-

こんにちは。
アクセスで各レコードの印刷部数がそれぞれ異なるため、各レコードに入力した(フォームから)部数指定で
看板を印刷するよう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

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

投稿日時 - 2013-06-03 16:04:01

QNo.8117734

すぐに回答ほしいです

質問者が選んだベストアンサー

もしかして、こんな事をやりたいのでは?
レポート印刷で印刷部数をフォーム上で指定する方法:SampleFile146
http://www.accessclub.jp/samplefile/samplefile_146.htm
勘違いならご容赦。

投稿日時 - 2013-06-04 11:46:34

補足

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

投稿日時 - 2013-06-04 12:35:56

お礼

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

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

投稿日時 - 2013-06-05 20:11:24

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

すみません。『看板』の意味というか概念がぼんやりとしか分かりません。
例えば
品物テーブル
品物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/AcTipsRptHowToPrintRabelSpecificNumber.html
が近いような気もしますけど?ハズレ?

とりあえず
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の方は無効(コメントアウト)しておいて)

投稿日時 - 2013-06-04 15:41:18

補足

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

説明不足ですいません。
受注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:13

お礼

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

投稿日時 - 2013-06-05 12:43:44

ANo.3

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

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

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

と書けば動くのでは?

投稿日時 - 2013-06-03 17:24:22

ANo.2

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

◇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」がありませんよ?

投稿日時 - 2013-06-03 16:42:10

ANo.1

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
の中では、Ifが2つあるのにEnd Ifが1つしかないからエラーになっています。
End If1つで2つのIfが終了するわけではありませんよ。

投稿日時 - 2013-06-03 16:09:37

補足

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

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:51

あなたにオススメの質問