• 締切済み

取り消し二重線を表示させる方法 その2

『取り消し二重線を表示させる方法』ではお世話になりました。 おかげさまで快適に処理が進んでおります。 が、また一つ、つまづいてしまいました。 >テーブルに”受注年月日” ”作成月日” ”保管年数” ”保管期限”というフィールドがあります。  保管期限はすべて年度末の日付で設定しています。  質問は、レポートもしくはフォームを作成して印刷時、保管期限が過ぎた行に赤い取り消し二重線 を表示させる方法です。日付フィールドは、元々エクセルデータをコピーしているだけなので  ”2010.12.31”の様に表示されています。 これの回答として >Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  If DateValue(Replace([保管期限], ".", "/")) < Date Then  Me!L1.Visible = True  Me!L2.Visible = True  Else  Me!L1.Visible = False  Me!L2.Visible = False  End If  End Sub と頂きましたが、その他に"備考"というテーブルもあり、レコードによって 〝月"とか"水"など平日の曜日が入っている時があります。お伺いしたいのは、 "火"や"木"が入力されている時は、保存期限が過ぎていても二重線を引かない様にするというのと、フィールド"保管期限"が空白だった時も二重線を引かないというのを上記の記述に追加したいのですが、教えていただけないでしょうか?

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.6

nda23です。 打ち消し線可視 = False If [保管期限] <> "" Then   If [備考] = "" Then     If DateValue(Replace([保管期限], ".", "/")) < Date Then       打ち消し線可視 = True     End If   End If End If ※「曜日」は「備考」に修正しました。 >備考に何か入っていると・・・ 上記プログラムで見ると備考が空欄で なければ打ち消し線可視 = Trueには 到達しないはずです。 「空白」と仰っているのはもしかして、 実際に半角空白が入っているという ことでしょうか? もし、そうならNzとTrimを重ねてみて ください。 If Trim(Nz([保管期限], "")) <> "" Then   If Trim(Nz([備考], "")) = "" Then     If DateValue(Replace(Trim([保管期限]), ".", "/")) < Date Then       打ち消し線可視 = True     End If   End If End If

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

(1) >この方法ですと空白がある時、プレビュー時に >"Null値が不正です"と表示されてしまいます 空白があるとき、というのはどのフィールドが 空白のときでしょうか。 このとき、デバッグをするとどこが黄色く反転しますか。 If Not IsNull(Me![保管期限]) Then としているので、保管期限が空白のときは、 除外しているのですが。 (2) もう一点。 保管期限、備考がともに空白 の場合は、保管期限が空白を優先して、 線を引かないということでいいのでしょうか。 以下だと、保管期限、備考がともに空白 の場合は、保管期限が空白を優先して、 線を引かないということになります。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Not IsNull(Me![保管期限]) Then If DateValue(Replace(Me![保管期限], ".", "/")) < Date Then If IsNull(Me![備考]) Then Me!L1.Visible = True Me!L2.Visible = True End If End If Else Me!L1.Visible = False Me!L2.Visible = False End If End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

以下では、どうですか。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Not IsNull(Me![保管期限]) Then If DateValue(Replace(Me![保管期限], ".", "/")) < Date Then If IsNull(Me![備考]) Then Me!L1.Visible = True Me!L2.Visible = True Else Me!L1.Visible = False Me!L2.Visible = False End If End If End If End Sub

laychel
質問者

補足

proin654さん この方法ですと空白がある時、プレビュー時に"Null値が不正です"と表示されてしまいます。空白がない一覧に関しては問題ないです。nda23さんの通りにすると、備考に何も無い時は願いどおりになるのですが、備考に値があれば保管期限関係なく二重線が表示されてしまいます。やりたい事を優先すると、保管期限がすぎたら二重線、しかし保管期限が空白だったら期限を過ぎていても線は表示しない。この2点だけでも同時に出来る方法を今一度お教えください。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

VBでは条件式の最適化が行われないので、 複数の条件を一度に判断するコードは効率が 悪く、エラーが発生することもあります。 先ず、打ち消し線を表示しない確率が高いので、 「線なし」状態から始め、順次条件を判定して、 「線あり」にします。「線あり」の条件は以下の 全ての場合を満たす時です。 (1)保管期限が空欄でない (2)曜日が空欄である (3)保管期限が本日より前 Dim 打ち消し線可視 As Boolean 打ち消し線可視 = False If [保管期限] <> "" Then   If [曜日] = "" Then     If DateValue(Replace([保管期限], ".", "/")) < Date Then       打ち消し線可視 = True     End If   End If End If Me!L1.Visible = 打ち消し線可視 Me!L2.Visible = 打ち消し線可視 If [保管期限] <> "" And DateValue(Replace([保管期限], ".", "/")) < Date こうやると保管期限が空欄の場合にエラーが 発生します。これは条件式が最適化されない ので、必ずDateValueが実行されるためです。 IIf関数でも先ず真の時の値と偽の時の値が 準備されてから条件を判断しますので、条件 により値を得られない(エラーを起こす)ものを 真、あるいは偽の値として使うことは避ける 必要があります。

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

#1は変換ミスでした。 If DateValue(Replace([保管期限], ".", "/")) < Date Then ↓ If DateValue(Replace([保管期限], ".", "/")) < Date And [備考] <> "火" And [備考] <> "木" And [保管期限] <> "" Then

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

If DateValue(Replace([保管期限], ".", "/")) < Date Then ↓ If DateValue(Replace([保管期限], ".", "/")) < Date And [備考] <> "火" And [備考] <> "木" And [補間期限] <> "" Then

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessのレポートに取り消し線を表示したい

    いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub お力添えをお願いいたします。

  • Access レポートの詳細Formatに複数の式

    いつもお世話になっています。 レポートの詳細に結婚して姓が変更になった場合、旧姓に取り消し線を引く という式を作成しました。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub 今回は、住所も変更になって新住所が入力されたら、旧住所に取り消し線を引きたいと 思います。 ただし、変更にならない場合もあるので、別のIF文になります。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新住所 <> "" Then Me.取り消し線3.Visible = True Me.取り消し線4.Visible = True Else Me.取り消し線3.Visible = False Me.取り消し線4.Visible = False End If End Sub レポートの詳細_Formatに複数の条件を設定することができるのでしょうか。 お力添えをお願いいたします。

  • 取り消し二重線を表示させる方法

    Access2003を使用しています テーブルに”受注年月日” ”作成月日” ”保管年数” ”保管期限”というフィールドがあります。 保管期限はすべて年度末の日付で設定しています。 質問は、レポートもしくはフォームを作成して印刷時、保管期限が過ぎた行に赤い取り消し二重線を表示させる方法です。 いろいろ似た内容の質問を検索しましたが、イベントプロージャの記述は勿論ですが、何処をクリックすると云わんとしている画面がでるのかもわからずにいます。 どなたか教えて下さらないでしょうか?よろしくお願いいたします。

  • Accessのレポートでデータがなくても罫線だけ表示させたい

    Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database  Dim A As Integer '-------今何行目なのかをカウントする為の変数  Dim B As Integer '-------今回印刷する予定のレコード件数を入れて                  おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)   A = 0   B = DCount("ID", "Q05商品リスト")   Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  A = A + 1  If A Mod 10 = 0 Then    Me!改ページ3.Visible = True  Else    Me!改ページ3.Visible = False    If A < B Then      Me.NextRecord = True      Me!商品名.Visible = True      Me!メーカー名.Visible = True    ElseIf A = B Then      Me.NextRecord = False      Me!商品名.Visible = True      Me!メーカー名.Visible = True    Else      Me.NextRecord = False      Me!商品名.Visible = False      Me!メーカー名.Visible = False    End If   End If End Sub

  • 行数を固定して納品書を作成したが、いらない部分がでる

    こんばんは、提出時間がせまっているので、 あせって、質問しました。 今、アクセスにて納品書のレポートの作成中です。 Q_売上テーブルとQ_売上明細テーブルをつかって、 レポートを作成し、5行に固定したかったので、 下記のようなVBAを記述しました。 行は、固定されましたが、 なぜか1行しかない時などに、 商品区分だけが2行目3行目に1行目の内容をコピーして はいってくるのです。 どこがおかしいのかわからず、苦戦中です。 ご教授、よろしくお願いいたします。 Option Compare Database Dim AAA As Integer Dim BBB As Integer Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) AAA = 0 BBB = DCount("伝票番号", "Q_売上明細テーブル", "伝票番号='" & Me!伝票番号 & "'") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) AAA = AAA + 1 Me!テキスト54 = AAA If AAA Mod 5 = 0 Then If AAA < BBB Then Me!改ページ55.Visible = True Me.Section(3).Visible = True ElseIf AAA = BBB Then Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me!テキスト54.Visible = False Me!商品区分.Visible = False Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If Else Me!改ページ55.Visible = False Me.Section(3).Visible = False If AAA < BBB Then Me.NextRecord = True Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True ElseIf AAA = BBB Then Me.NextRecord = False Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me.NextRecord = False Me!テキスト54.Visible = False Me!商品区分.Visible = True Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If End If End Sub

  • ACCESS  日付が変わった場所で改ページしたい

    Win 7 Access2013 大変、お世話になっています。よろしくお願いしたいと思います。 日程表で、詳細に「日付」「場所」「時間」「内容」などのフィールドがありA5の用紙に印字しています。1枚の用紙に収まらない場合、2枚目に順次印字されています。 この2枚目に移る時、「日付」が変わった時点で改ページをしたいのです。「日付」は日が変わった時だけ入力しています。 色々、調べてみて、グループ化もしてみましたがうまく出来ませんでした。「グループ化」の中で、印字の時の「グループ全体」という項目が Access2013では見当たりませんでした。 何卒、ご教示方よろしくお願いいたします。 【備考】 モジュールには、ここでご教示いただいた下記のような「線」の記述をしています。 Option Compare Database Option Explicit Dim HI As String Dim TI As String Dim NAIYO As String Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) HI = """" TI = """" NAIYO = """" End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If HI <> Me.行程_日付 Then Me.直線51.Visible = True HI = Me.行程_日付 Else Me.直線51.Visible = False End If If TI <> Me.テキスト44 Then Me.直線53.Visible = True TI = Me.テキスト44 Else Me.直線53.Visible = False End If If NAIYO <> Me.内容 Then Me.直線55.Visible = True NAIYO = Me.内容 Else Me.直線55.Visible = False End If End Sub Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Me.ScaleMode = 1 Me.ForeColor = 0 Me.DrawStyle = 0 Me.DrawWidth = 4 Me.Line (1.51 * 567, 0)-(1.51 * 567, 14400) Me.Line (6.8 * 567, 0)-(6.8 * 567, 14400) Me.Line (8.3 * 567, 0)-(8.3 * 567, 14440) End Sub

  • マウスが触れるとテキストを表示し離れる非表示にする

    アクセスです。 フォームにラベルを設置して、 そのラベルにマウスが触れたらテキストボックスを表示させたいのです。 フォームのオープンイベントは Private Sub Form_Open(Cancel As Integer) Me.テキスト2.Visible = False End Sub になっています。 ラベルのマウスボタン解放時イベントで Private Sub ラベル0_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にして、ラベルをクリックするとテキストボックスが表示されます。 マウスボタン移動時イベントで Private Sub ラベル0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にすると、理想通りラベルからマウスが触れたらテキストボックスが表示されます。 ここまではいいのですが マウスのカーソルが離れたら またテキストボックスを非表示にしたいのですがどうすればいいですか?

  • Loadしてある絵を切り替えて表示する

    Excel VABで、同じ表示位置に重ねてLoadしてある複数の画像から 一枚だけを選択して表示しようとしています。次のソースのように 表示する絵だけをVisible = Trueとしていますが、絵の切り替わりが もたもたしていて、スパッと切り替わりません。 もっときれいに切り替えるために何か良い方法はないでしょうか? よろしくお願いします。 Sub dispPicture(pn As Integer) Select Case pn Case 0 ' ClipNameView Image1.Visible = True Image2.Visible = False Image3.Visible = False Image4.Visible = False Image5.Visible = False Case 1 ' ThumbnailView Image1.Visible = False Image2.Visible = True Image3.Visible = False Image4.Visible = False Image5.Visible = False End Select End Sub

  • アクセス2000 5行で改ページ

    アクセス2000のレポートで、5行で改ページをさせようと以下のようにコードを記述しましたがうまくいきません。 どなたかアドバイスをお願いします。 配置されているテキストボックスは、 [氏名] [人事区分チェック1] [人事区分チェック2] [人事区分チェック3] [人事区分チェック4] [人事区分チェック5] [人事区分チェック6] [人事区分チェック7] [その他の内容] [役職] [採用年月日] [契約終了日] [備考] でコードは以下の通りです。 Dim i, j Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) i = 0 j = DCount("*", "採用時提出書類管理クエリ", "[教授会]=reports![92 人事関係報告書]![教授会]") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) i = i + 1 If i Mod 5 = 0 Then If i <= j Then Me![bpage].Visible = True Else Me![氏名].Visible = False Me![人事区分チェック1].Visible = False Me![人事区分チェック2].Visible = False Me![人事区分チェック3].Visible = False Me![人事区分チェック4].Visible = False Me![人事区分チェック5].Visible = False Me![人事区分チェック6].Visible = False Me![人事区分チェック7].Visible = False Me![その他の内容].Visible = False Me![役職].Visible = False Me![採用年月日].Visible = False Me![契約終了日].Visible = False Me![備考].Visible = False End If Else Me![bpage].Visible = False If i < j Then Me.NextRecord = True Me![氏名].Visible = True Me![人事区分チェック1].Visible = True Me![人事区分チェック2].Visible = True Me![人事区分チェック3].Visible = True Me![人事区分チェック4].Visible = True Me![人事区分チェック5].Visible = True Me![人事区分チェック6].Visible = True Me![人事区分チェック7].Visible = True Me![その他の内容].Visible = True Me![役職].Visible = True Me![採用年月日].Visible = True Me![契約終了日].Visible = True Me![備考].Visible = True ElseIf i = j Then Me.NextRecord = False Me![氏名].Visible = True Me![人事区分チェック1].Visible = True Me![人事区分チェック2].Visible = True Me![人事区分チェック3].Visible = True Me![人事区分チェック4].Visible = True Me![人事区分チェック5].Visible = True Me![人事区分チェック6].Visible = True Me![人事区分チェック7].Visible = True Me![その他の内容].Visible = True Me![役職].Visible = True Me![採用年月日].Visible = True Me![契約終了日].Visible = True Me![備考].Visible = True Else Me.NextRecord = False Me![氏名].Visible = False Me![人事区分チェック1].Visible = False Me![人事区分チェック2].Visible = False Me![人事区分チェック3].Visible = False Me![人事区分チェック4].Visible = False Me![人事区分チェック5].Visible = False Me![人事区分チェック6].Visible = False Me![人事区分チェック7].Visible = False Me![その他の内容].Visible = False Me![役職].Visible = False Me![採用年月日].Visible = False Me![契約終了日].Visible = False Me![備考].Visible = False End If End If End Sub データが5件未満は正しく表示されますが、5件を超えると2ページ目が4件しか表示されなかったりします。 グループ化がされており、[bpage]という改ページが入っています。 よろしくお願いします。

  • アクセスの標準モジュールを教えてください

    アクセス初心者です。イベントプロシージャで以下のようなVBAを作りました。(動作しました。) これを複数のレポートで使いたいので,標準モジュールで作りたいのですが,うまくできません。 下のVBAを標準モジュールで書くとどう書くのか教えてください。また,もしcallで呼び出すときの注意点等もあれば教えてください。 下のVBAでしたいことは,「加点減点*○」というイメージを「tbox_加点」というテキストボックスの値に応じて可視にするというものです。 アクセスは2007を使っています。よろしくお願いします。 Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Dim kt As Long Dim st As Long Me.加点減点_10○.Visible = False Me.加点減点_5○.Visible = False Me.加点減点0○.Visible = False Me.加点減点5○.Visible = False Me.加点減点10○.Visible = False kt = Me.tbox_加点 Select Case kt Case -10 Me.加点減点_10○.Visible = True Case -5 Me.加点減点_5○.Visible = True Case 0 Me.加点減点0○.Visible = True Case 5 Me.加点減点5○.Visible = True Case 10 Me.加点減点10○.Visible = True End Select End Sub