[[20141126215319]] 『データ入力後、帳票印刷時の未入力チェック』(まま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データ入力後、帳票印刷時の未入力チェック』(まま)

Book1.xlsmに"台帳"と"帳票"というSheetがあります。

"台帳"はこのようにしていて、A1セルに印刷したいNo,を入力

  A  B   C  D ・・・
1
2
3 No,__名前__コード__日付
4 1____AAA___100___2014/1/1
5 2____BBB___105___2014/2/1
6 3____CCC___110___2014/3/1
7 4____DDD___115___2014/4/1
8 5____EEE___________2014/5/1
・ ・
・ ・
・ ・

 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−

"帳票"では、B2セルに【=台帳!$A$1】
      B4セルに【=VLOOKUP($A$1,台帳!$A$4:$D$1000,2)&""】
      D4セルに【=VLOOKUP($A$1,台帳!$A$4:$D$1000,3)&""】
      B6セルに【=VLOOKUP($A$1,台帳!$A$4:$D$1000,4)】

  A  B      C  D ・・・
1
2 No,___1
3 
4 名前__AAA__コード__100  
5 
6 日付__2014/1/1

としているのですが、"台帳"のA1セルに印刷したいNo,を入力後、ボタンをクリックしたら、そのNo,のB列C列D列が全て入力されているか確認し、全て入力されていれば"帳票"のA1:D6を印刷、もし未入力箇所があれば、未入力のため印刷できないとエラーメッセージを出し、印刷できないようにできないでしょうか?
もしできるのであれば、エラーメッセージの後に、未入力箇所にカーソルが移動するなどしたいです。

どなたかお教えください。

< 使用 Excel:Excel2007、使用 OS:WindowsXP >


 マクロを使う事になると思いますが、今はマクロは何か使っておられますか?
 たとえば
  今はボタンをクリックしたら、なんでも(入力があってもなくても)印刷する様になっている
 とか。

 それとも今は、人が目で見て確認をして 印刷実行をしているのでしょうか?
  
(HANA) 2014/11/27(木) 16:32

今は、台帳シートでA1:D6を改ページプレビューで設定し、下記を使っています。

おっしゃる通り未入力があっても、ボタンをクリックするとなんでも印刷がかかってしまいます。

Sub 印刷する()

    Sheets("帳票").PrintOut

End Sub

(まま) 2014/11/27(木) 20:25


 1.番号を台帳シートのA1セルに入力する様ですが、B1セルに入力してください。
 2.帳票シートのVLOOKUP関数の式は 検索の型に「FALSE」を指定してください。
   B4セルに【=VLOOKUP($A$1,台帳!$A$4:$D$1000,2,FALSE)&""】
                                              ~~~~~~
 コードは、台帳シートをアクティブにして実行してください。

 '------
Sub 印刷する2()
Dim msg As String
    With Sheets("帳票")
        If IsError(.Range("B4").Value) Then
            MsgBox Range("B1").Value & " の番号はありません。"
        Else
            If .Range("B4").Value = "" Then
                msg = "『名前』"
            End If
            If .Range("D4").Value = "" Then
                msg = "『コード』"
            End If
            If .Range("B6").Value = "" Then
                msg = "『日付』"
            End If
            If msg = "" Then
                .PrintOut
            Else
                MsgBox msg & "の入力がありません。"
                Range("A" & Application.Match(Range("B1").Value, Range("A:A"), 0)).Select
            End If
        End If
    End With
End Sub
 '------
  
(HANA) 2014/11/27(木) 21:19

コード入れて確認しました!すごいです。ありがとうございます。

ただ、2つ以上未入力があった場合、"『○○』の入力がありません。"が1つでるのですが
"『○○と××』の入力がありません。"とできたりするのでしょうか?

よくばりを言いすみません。

(まま) 2014/11/27(木) 22:32


 二つ入力が無かった場合
 "『○○』『××』の入力がありません。"
 と出ると思いますが、『○○』しか出ませんか?

 それとも "』『" ではなく、あくまでも "と" でつなげたい
 と言う事でしょうか?
  
(HANA) 2014/11/28(金) 10:20

 あ、わかったかもです。
 >B6セルに【=VLOOKUP($A$1,台帳!$A$4:$D$1000,4)】 
 でしたね。

 でしたら、B6セルはデータが無かった場合「0」になっていると思うので
            If .Range("B6").Value = "" Then
 ではなく
            If .Range("B6").Value = 0 Then
 にしてみて下さい。
  
(HANA) 2014/11/28(金) 10:25

ありがとうございます。
メッセージの部分はできたのですが、関数に問題があるかもしれませんが帳票の日付B6がうまく表示できないのと、
エラーメッセージで型が一致しませんとでるのですがなぜでしょうか?

台帳では2014/1/1と表示されていても71111のような数値になってしまいます。
表示は''日付'にしているのですがm(__)m
(まま) 2014/11/28(金) 12:12


 数式の確認ですが
 他のセルと同じ様に最後に「&""」をつけていたら外してください。

 また、=TYPE(B6) の結果はどのようになりますか?
  
(HANA) 2014/11/28(金) 14:06

 ちなみに、
 >エラーメッセージで型が一致しませんとでる
 のは、コードのどの行で、対応するセルの値は何ですか?
  
(HANA) 2014/11/28(金) 16:45

日付は&””をつけてました。取ることで解決しました。
型の不一致ですが、実行時エラー”13”と
でます。そして
どのようにしたらエラー箇所の確認できるのでしょうか?
(まま) 2014/11/28(金) 18:09

 エラーメッセージのウィンドウに
  [継続(C)] [終了(E)] [デバッグ(D)] [ヘルプ(H)]
 ってありませんか?

 デバッグ(D)を押してもらうと、止まっている所が
 ハイライトで表示されるのですが。

 お伺いしてみるのですが、コードは標準モジュールに入れてありますか?
  
(HANA) 2014/11/28(金) 18:50

シートモジュールにいれたかもしれません。
というのも今日は退社しちしまったため
すみませんが月曜までお待ちいただけますか?
(まま) 2014/11/28(金) 20:39

 帳票シートのシートモジュールにおいていたら
                Range("A" & Application.Match(Range("B1").Value, Range("A:A"), 0)).Select
 の所でエラーが出るかもしれないですね。

 出社されて時間が取れたら、確認してみて下さい。
  
(HANA) 2014/11/28(金) 22:33

やはりシートモジュールに入れていたので標準モジュールに入れました。型が一致しません。というメッセージは出なくなりました。すみません。
それと今度は未入力が2つ以上ある場合、
 〉二つ入力が無かった場合
 "『○○』『××』の入力がありません。"
 と出ると思いますが、『○○』しか出ませんか?

『◯◯』しか出なくなりましたm(__)m
(まま) 2014/12/01(月) 10:38


 『○○』『××』は
 『名前』『コード』『日付』と三つありますが
 具体的にどういったパターンの時、どの様に表示されますか?

 たとえば、
  名前・コードに入力が無い時 『名前』の入力がありません
  コード・日付に入力が無い時 『コード』の入力がありません
 パターンが8パターンあると思いますが。

 それから、ステップインで実行してもらうと
            If .Range("B4").Value = "" Then
                msg = "『名前』"
            End If
            If .Range("D4").Value = "" Then
                msg = "『コード』"
            End If
            If .Range("B6").Value = 0 Then
                msg = "『日付』"
            End If
 の所で、入力が無い場合 msg = "『○○』" の方に分岐されないといけません。
 問題がある所では、すぐに End If になると思います。
 その時、 .Range(○○).Value と書いてある部分の上にマウスポインタを持っていくと
 セルの値が表示されますので、何が表示されるか確認してみて下さい。
  
(HANA) 2014/12/01(月) 11:01

◯は入力あり
×は入力なし としてパターンと表示されるメッセージです。

2つ以上×があると、日付になってしまいます。

_名前・コード・日付
1. ◯__◯__◯__無
2. ◯__◯__×__『日付』の入力がありません。
3. ◯__×___×__『日付』の入力がありません。
4. ◯__×___◯__『コード』の入力がありません。
5. ×___◯__◯__『名前』の入力がありません。
6. ×___×___◯__『コード』の入力がありません。
7. ×___×___×___『日付』の入力がありません。
8. ×___◯__×___『日付』の入力がありません。

ステップインですが、日付の所がすぐにEnd Ifにいきました。

 .Range(○○).Value と書いてある部分の上にマウスポインタを持っていった
のですが何も表示されませんでした。

(まま) 2014/12/01(月) 22:47


 あ、すみません。コードが間違えてます。

            If .Range("B4").Value = "" Then
                msg = "『名前』"
            End If
            If .Range("D4").Value = "" Then
                msg = msg & "『コード』"
            End If
            If .Range("B6").Value = 0 Then
                msg = msg & "『日付』"
            End If

 でやってみて下さい。

 (HANA) 2014/12/01(月) 23:35

ありがとうございます。思っていたものができました。
おつきあいただきありがとうございました。
もっと勉強します。
(まま) 2014/12/02(火) 12:26

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.