dポイントプレゼントキャンペーン実施中!

商品の販売をPC管理しています。手順としては、
①PCの台帳シートにお客ごとに黄色セルの一連番号(D2セル)と店コード(E2セル)を入力し、G2で表示される店舗確認後に、入力シートに移動し、黄色のセルのB16に商品コード(101)、数量(1)を入力します。品名・数量を確認し、転記印刷ボタンをクリックし、台帳に転記と同時に別シートの納品書を印刷します。次に、
②次の来客のため、台帳シートに戻します。台帳の記録行は転記されているが、黄色セルの入力欄はそのままです。
③来客がある場合は、一連番号、店コードを次の番号に上書きして処理しています。


以上の処理を行っていますが、一連番号を変えることに気づかず、店コードのみ変えて入力シートに移動し、転記印刷してしまい、伝票番号(一連番号)の重複発行及び転記行欄が上書きされ、前のデータが記録されないミスが多々出て、伝票をみながら訂正入力しています。毎日の確認作業がロスになっています。

このミスを防止するには、入力シートで転記印刷ボタンをクリックした時に、台帳シートの黄色セル内の一連番号が「次の番号」に変わっていて、同時に、店コードが「空欄」になっていればと思っています。なお、重複なら「メッセージ」も表示したい。

添付画像は、例ですが、実際は4月から現在も実用しています。なお、添付の「転記のコード」に書き込みたいのですが、このコードにどんなコードを入れたら良いの解りません。

教えて頂けたら大変助かります。

「台帳シートの一連番号が別入力シートでデー」の質問画像

質問者からの補足コメント

  • コードを2回に分けました。(文字オーバーのため)

    Public Sub 転記()
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim maxrow As Long
    Dim row As Long
    Dim dicT As Object
    Dim key As Variant
    Set sh1 = Worksheets("納品書台帳")
    Set sh2 = Worksheets("入力シート")
    Set dicT = CreateObject("Scripting.Dictionary")
    maxrow = sh1.Cells(Rows.Count, "D").End(xlUp).row
    '伝票番号を記憶
    For row = 7 To maxrow
    key = sh1.Cells(row, "D").Value
    dicT(key) = row
    Next

      補足日時:2021/11/14 09:53
  • コード 続き です。

    key = sh2.Cells(8, "R").Value
    If dicT.exists(key) = False Then
    MsgBox ("伝票番号=" & key & "は納品書台帳にありません")
    Exit Sub
    End If
    If sh2.Cells(12, "E").Value = "" Then
    MsgBox ("名前が未入力です")
    Exit Sub
    End If
    If sh2.Cells(24, "S").Value = "" Then
    MsgBox ("金額が未入力です")
    Exit Sub
    End If
    row = dicT(key)
    sh1.Cells(row, "G").Value = sh2.Cells(12, "E").Value '名前

      補足日時:2021/11/14 09:59
  • 続きです。(最後)

    sh1.Cells(row, "H").Value = sh2.Cells(24, "S").Value '金額
    MsgBox ("転記完了印刷します")
    Call 印刷 'Sub印刷()を呼び出す。
    End Sub

      補足日時:2021/11/14 10:00
  • 画像の添付にセキュリティがかかって送れませんでしたので、説明させていただきます。
    ① 台帳の様式は
    2行目:B2C2→今日の年月日、D2→一連番号その都度入力)、E2→店コード(その都度入力)
     ※D2とE2は、来客の都度入力するセルです。
    4行目~6行目までは、項目です。
    7行目:B7C7→入力時の年月日、D7→一連番号(=伝票番号)、D7→店コード(=店舗ID)、G7→店名、H7→金額8行目以降は、7行目と同じく、月日及び一連番号(=伝票番号)等ごとに、自動転記されます。
    従って、2行目の入力以外は入力シートからの転記になります。

    ② 入力シートの様式
    伝票(納品書)様式にして、台帳の一連番号と店コードの入力で、年月日、伝票番号、店名が表示されて、以下の商品コードと数量を入力します。
    16行目:B16→商品コードを入力すると、D16→商品名、G16→数量

      補足日時:2021/11/14 11:14
  • 続きです。

    以下、他の商品を追加できるように、23行目まで表示できます。※この入力シートの入力により、納品書・請求書・領収書が別シートに作成されます。
    ※このシートから、台帳へ転記するとともに、伝票を印刷する。
    となります。

    ご質問にもありましたが、台帳シートと入力シートの関係は、一連番号と店コードの付与が、はじめに台帳シートでの入力でスタートするので、次の来客時の処理をするためには、台帳シートに戻る必要があります。

    この台帳シートに戻った際、2行目のD2(一連番号)とE2(店コード)はそのままとなっています。
    従って、台帳シートに戻ったとき、D2の一連番号が次の番号に変わっておれば、番号の重複を防ぐことができます。

      補足日時:2021/11/14 11:15
  • 早とちりですみません。
    sh1.Cells(2, "D").Value =「次の番号」
    sh1.Cells(2, "E").Value = ""

    を、そのまま入れたら、sh1.Cells(2, "D").Value =「次の番号」が赤くなりました。
    ご指示を待てばよかったと後悔しています。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/11/15 16:35

A 回答 (3件)

Call 印刷 'Sub印刷()を呼び出す。


の次の行へ
sh1.Cells(2, "D").Value = sh1.Cells(maxrow, "D").Value + 1
sh1.Cells(2, "E").Value = ""
を追加してください。
    • good
    • 0
この回答へのお礼

ありがとう

大変有難うございました。
私の考えているとおりになりました。

お礼日時:2021/11/15 18:40

<<<このミスを防止するには、入力シートで転記印刷ボタンをクリックした時に、台帳シートの黄色セル内の一連番号が「次の番号」に変わっていて、同時に、店コードが「空欄」になっていればと思っています。

なお、重複なら「メッセージ」も表示したい。>>>

上記がなさりたいことかと思いますが、
不明点1
上記のコードを埋め込むのは、
Call 印刷 'Sub印刷()を呼び出す。
の次の行でよいのですか?
つまり
Call 印刷 'Sub印刷()を呼び出す。
sh1.Cells(2, "D").Value =「次の番号」
sh1.Cells(2, "E").Value = ""
のようになれば良いのでしょうか?

不明点2
「なお、重複なら「メッセージ」も表示したい」
ということですが、何と何が重複した場合のことでしょうか。
もし、D2の一連番号が、D7列以降の一連番号と重複している場合という意味なら、今後は不明点1の個所で、かならず次の番号をセットするようになるので、重複は発生しないようになるはずですが。
この回答への補足あり
    • good
    • 0
この回答へのお礼

遅くなりました。有難うございます。

>不明点1
上記のコードを埋め込むのは、Call 印刷 'Sub印刷()を呼び出す。
の次の行でよいのですか?
→良いです。おっしゃる通りです。考えてみれば、「転記印刷」ボタンで同時に進行した後のことなので、納得いたしました。
>不明点2
→おっしゃる通りです。考えが及びませんでした。

コードを試行してみます。有難うございました。

お礼日時:2021/11/15 16:24

こんばんは



ほとんど理解できていませんが・・・

・「台帳シートを上書き使用」って、それって本当に台帳シートなのでしょうか?
・「台帳シート→入力シートに移動して入力」 入力シートだけで済ませないのでしょうか?
・「一連番号を書き直す」一連番号なら、記入などさせる必要などないのでは?

なんだか、複雑にして、返って使いにくくしているように感じられます。
全体をもう少し見直してみてはいかがでしょうか?


※ コードを載せるのなら、コピペで書かれた方が回答が付きやすいと思いますよ。
(図だと読みにくい上に、回答者がいちいち手入力で入れなくてはならない)
    • good
    • 0
この回答へのお礼

有難うございます。セキュリティがかかって、添付画面が全て添付できませんでした。解りにくくてすみませんでした。

・「台帳シートを上書き使用」って、それって本当に台帳シートなのでしょうか?
→台帳シートには、入力シートの内容を転記すると、台帳に一連番号ごとに記録されます。一連番号は台帳のD列にすでに入れてます。来客の受付時に台帳の空欄行のD列の空欄行から、受付の一連番号を、台帳の別枠の黄色Dセルに入力しています。
・「台帳シート→入力シートに移動して入力」 入力シートだけで済ませないのでしょうか?
→入力シートの様式は、納品書・請求書・領収書に内容を作成するため、自動転記(コピー)し、印刷するためのシートになります。また、入力シートで台帳転記処理をして、台帳に記録しています。
・「一連番号を書き直す」一連番号なら、記入などさせる必要などないのでは?
→前述の納品書等を作成するため、どうしても、台帳の別枠で一連番号と店コードを付与した後に、入力シートに移動する必要があります。

コードは補足コメントに添付します。

お礼日時:2021/11/14 09:44

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