- ベストアンサー
アクセスIfブロックに対応するEnd Ifエラ-
- VBA初心者がアクセスにおいてIfブロックに対応するEnd Ifエラーに遭遇しました。
- 部数指定に応じて看板を印刷するVBAを入力したところ、コンパイルエラーが発生しました。
- 質問者はVBAのエラーを自力で修正できないため、助けを求めています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
もしかして、こんな事をやりたいのでは? レポート印刷で印刷部数をフォーム上で指定する方法:SampleFile146 http://www.accessclub.jp/samplefile/samplefile_146.htm 勘違いならご容赦。
その他の回答 (4)
- nicotinism
- ベストアンサー率70% (1019/1452)
すみません。『看板』の意味というか概念がぼんやりとしか分かりません。 例えば 品物テーブル 品物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の方は無効(コメントアウト)しておいて)
お礼
補足へ入力出来なかったのでお礼の所へ入力します。 間違えました。 引当IDと引当先で1対多のリレーションでした。 すいません。
補足
回答ありがとうございます。紹介していただいたホームページも試してみます。 説明不足ですいません。 受注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部づつですが、部数指定したいと思っています。 回答下さったものを試してみましたが、マクロ実行エラーが出てしまいました。 宜しくお願いいたします。
- okgoripon
- ベストアンサー率44% (1141/2548)
If IsNull([cut]) Then [cut] = 1 上記の2行を2行に分けず If IsNull([cut]) Then [cut] = 1 と書けば動くのでは?
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
「◇」は「同じ番号の◆」に対応します。 ◇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」がありませんよ?
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
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 と改造しましたが。。。ドツボにハマったようです。 素人で申し訳ありません、よろしくお願いします。
お礼
こんばんは、nicotinismさん。 イメージに近いホームページを探して頂いて有難うございました。 >※イメージ的に http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptHowToPrintRabelSpecificNumber.html が近いような気もしますけど?ハズレ? 上記のものを試してみたら望み通りにいきました。。。 数年悩んでいた物が解決しすごく感謝しています。 有難うございました。
補足
調べて頂き、回答ありがとうございます。 例えば、品物が20台の注文が入った時、ワゴンには10台までしか乗らないため同じ看板を2枚必要です。 注文個数は一つ一つバラバラなので、1レコード1注文入力するとして。。。レコード単位で部数指定したいと思っています。 現在、看板ボタンをクリックするとすべて1部づつとしてのプレビューが出ます。 私が参考にしたホームページは http://support.microsoft.com/kb/404902/ja です。 宜しくお願いします。