付録

【ご質問
マクロでの表転記について A、B、Cの品、それぞれの発注表を更新後、ボタンを押せば 総計表にも自動で追加されるようにしたいと思っていますが上手くいきません。 どのようなコードが良いか、簡単にでもよいので教えていただきたいです。
①(手入力)A,B、Cの品の発注があるたびそれぞれの品目表に入力 (全て表の形は同じ、都度一番下の行に追加)
②(自動)総計表に追加
③(自動)並び替えされ納品時期の昇順になるように(品目はバラバラで可) ボタンを押すたび追加した行が総計表に増えていくのが可能でなければ ボタンを押すたび総計表が一度削除され、すべてのデータを 読み込み直す方法でも構いません。 コードをお見せして添削して頂きたかったのですが あまりにも拙かったので一旦無しで質問を投げさせていただきます。 品目表と総計表のイメージ画像のみ一枚の画像として添付させていただきます。

【回答】
今回プログラムを組む目的は、発注表より総計表に転記を行なう場合に納品日の順番に並べて転記を行なうこと。
その為の前提は次の通りとする。
1.発注表の記載事項は、B列からQ列までの16項目とする。
2.納期日が記入されている列はE列
3.データ入力は5行目から開始を行なう。
4.「発注表」と「総計表」の様式は同じとする。
5.発注表に記入されたデータ数は10,000行まで対応可能とする。
プログラムを作成する手順
1.シート名の設定:
1)発注表のシートを「発注表」とする。
2)総計表のシート名を「総計表」とする。
但し、総計表のシート名はプログラムに影響しない。
下図参照下さい。
①「総計表」シートに発注表のシート名を書き込む欄を作成する。
発注表のシート名を変更する場合には、このシートの発注書シート名の「発注書」を書き換える。
②総計表シートに読込用の「フォームコントロール」の「ボタン」をタブの「開発」の「挿入」から貼付ける。
シートの様式は次の通り
図1
3.貼付けたボタンの「Click」のプロシージャに以下のプログラム書き込む、またはコピーして貼付けた後、ボタンをクリックすると上記の発注表のデータが、総計表のシートに納入時期の日付順に並べられて転記されます。
作成されたファイルのリンク:Sample15.xlsm

Sub ボタン1_Click()
'総計表への転記ボタン

Application.ScreenUpdating = False
With Worksheets(Cells(1, 3).Value)
For n0 = 5 To 10000
If .Cells(n0, 2).Value = "" Then
    Exit For
Else
    If .Cells(n0, 19).Value = "" Then
        For n1 = 5 To 10000
        If Cells(n1, 2).Value = "" Then
            If n1 = 5 Then
                For x = 2 To 16
                Cells(n1, x).Value = .Cells(n0, x).Value
                Next
                .Cells(n0, 19).Value = "転記済み"
                Exit For
            ElseIf n1 = 6 Then
                If .Cells(n0, 5).Value >= Cells(n1 - 1, 5).Value Then
                    For x = 2 To 16
                    Cells(n1, x).Value = .Cells(n0, x).Value
                    Next
                    .Cells(n0, 19).Value = "転記済み"
                    Exit For
                ElseIf .Cells(n0, 5).Value < Cells(n1 - 1, 5).Value Then
                    Range(Cells(n1 - 1, 2), Cells(n1 - 1, 17)).Select
                    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    For x = 2 To 16
                    Cells(n1 - 1, x).Value = .Cells(n0, x).Value
                    Next
                    .Cells(n0, 19).Value = "転記済み"
                    Exit For
                End If
            Else
                If .Cells(n0, 5).Value >= Cells(n1 - 1, 5).Value Then
                    For x = 2 To 16
                    Cells(n1, x).Value = .Cells(n0, x).Value
                    Next
                    .Cells(n0, 19).Value = "転記済み"
                    Exit For
                Else
                    For n2 = 1 To n1 - 5
                    If .Cells(n0, 5).Value < Cells(n1 - n2, 5).Value _
                        And .Cells(n0, 5).Value >= Cells(n1 - n2 - 1, 5).Value Then
                        Range(Cells(n1 - n2, 2), Cells(n1 - n2, 17)).Select
                        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                        For x = 2 To 16
                        Cells(n1 - n2, x).Value = .Cells(n0, x).Value
                        Next
                        .Cells(n0, 19).Value = "転記済み"
                        Exit For
                    ElseIf n1 - n2 = 5 Then
                        If .Cells(n0, 5).Value < Cells(n1 - n2 - 1, 5).Value Then
                            Range(Cells(n1 - n2, 2), Cells(n1 - n2, 17)).Select
                            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                            For x = 2 To 16
                            Cells(n1 - n2, x).Value = .Cells(n0, x).Value
                            Next
                            .Cells(n0, 19).Value = "転記済み"
                            Exit For
                        End If
                    End If
                    Next
                End If
            End If
            Exit For
        End If
        Next
    End If
End If
Next
End With 
End Sub
 
4.ボタンをクリックして「発注書」より「総計表」に転記された行のS列に「転記済み」が表示されます。
この「転記済み」の表記がある行は、次にボタンをクリックした時には検索対象外となり重複して計上されません。
以上
  


サイドバータイトル
inserted by FC2 system