在庫リストを調査個所別シートに仕上げるエクセルVBA

kanseizaikoeyecatcha

雑誌と書籍の在庫リストのソフト作成です。今回は、調査個所別シートに在庫データを表記する部分です。
多量のデータを分かり易く整理して行えるようになります。

こんにちは、じゅんぱ店長(@junpa33)です。

雑誌と書籍の在庫リストのソフト作成方法について、

今回の記事内容は、

在庫表に表示するデータを今まで作成・整理してきましたが、

それを清書という形で、新しいシートに転記表示します。

「書誌棚卸表.xlsm」での新しいシートの作成と在庫表表示の操作を行うVBAコードの説明です。

雑誌と書籍の在庫リスト(棚卸表)作成の記事編成

在庫リストを調査個所別にシート転記するVBA

kanseizaikohyop001

調査個所別のシート作成の流れ

「発行(制作)部署名」と「チェック場所(調査場所)」の項目を作成する在庫リストに表示します。

調査場所名の新しいシートを作成し、そちらに作成した在庫管理表を表示します。

調査場所別にチェックできるようにシートを作成していきます。

プリントアウトすれば、提出できる状態の完成資料になる様に作り上げます。

「場所別在庫表」プロシージャーの作成

エクセルVBAコード記述の流れは、このような感じです。

別のVBA記述ですが、ユーザーフォームで作成する「コントロールパネル」に「発行部署」と「チェック場所名」を入力するテキストボックスを設置しておきます。

(ユーザーフォームについては後の記事で説明します。)

その「チェック場所名」をシート名として新しいシートを作成します。

もし「チェック場所名」が未記入であれば「年月日ー時間」をシート名とします。

その新しいシートの中で、

  1. A列からG列を使用します。
  2. サイズは「A4タテ用紙」にサイズ合わせをしています。
  3. G列は「備考欄」として手書き入力スペースとしています。

プリントアウト時の在庫表のヘッダーには

  1. 書誌在庫表(「チェック場所名」)」のタイトル名を付けています。
  2. 発行日と「発行部署」が印字されます。「発行部署」については未記入の場合はカットされます。

フッターについてはページ数がセンターに印字されます。

エクセルVBAコードの作成テクニック

”新しいシート”を作成し、そのシートで作表などの作業をしたい場合、

”新しいシート”をVBAコードで指定できるようにすることが必要です。

”新しいシート”を作成した時、その瞬間その”新しいシート”はフォーカスされています。

つまりアクティブシートの状態になっています。

このアクティブな状態の時に”名付け”を行います。(今回は変数名を付けています。)

一度名前を付けさえすれば、そのシート名を指定してシート操作を行えます

vbanameeyecatch 新規作成ブックとシート。アクティブ状態でやっておくこと
VBA
Sub 場所別在庫表()
    Dim Wn As Variant, NWn As Variant
    Dim Zrow As Long, Zrowb As Long
        Worksheets("作業シート").Select
            Wn = SpaceName
            Range("E2").Value = Wn
            If Wn = "" Then
                NWn = Format(Now(), "yymmdd-hhmm")
            Else
                NWn = Wn
            End If
            Worksheets.Add After:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = NWn
        Worksheets("作業シート").Select
            Zrow = Cells(Rows.Count, 6).End(xlUp).Row
            Range("E1", "J" & Zrow).Copy _
                Destination:=Worksheets(NWn).Range("A1")
            Application.CutCopyMode = False
            Worksheets(NWn).Select
            Range("G1") = "備考"
            Range("C" & Zrow + 1) = "合計"
            For Each CELS In Range(Cells(2, 2), Cells(Zrow, 2))
                If CELS.Value = "" Then
                    Rows(CELS.Row).Delete
                End If
            Next
            Zrowb = Cells(Rows.Count, 3).End(xlUp).Row
            For t = 2 To Zrowb
                If Len(Range("B" & t)) = 6 Then
                    Range("B" & t) = "0" & Range("B" & t)
                End If
            Next t
        Range("A:G").Font.Size = 10
        Range("A:A").ColumnWidth = 8
        Range("B:B").ColumnWidth = 15
        Range("C:C").ColumnWidth = 25
        Range("D:D").ColumnWidth = 10
        Range("E:E").ColumnWidth = 10
        Range("G:G").ColumnWidth = 10
        Range("A1").RowHeight = 21
        Range("A1").Select
        With Range("F:F")
            .NumberFormatLocal = "\#,##0;\-#,##0"
            .ColumnWidth = 10
        End With
        With Worksheets(NWn).PageSetup
            .PrintTitleRows = "$1:$1"
            .PrintTitleColumns = ""
            .PrintArea = "A1:G" & Zrowb
            .CenterHeader = "書誌在庫表" & "(" & NWn & ")"
            .RightHeader = Date & Chr(10) & ShopName
            .CenterFooter = "&P" & "/" & "&N"
            .PaperSize = xlPaperA4
            .Orientation = xlPortrait
            .LeftMargin = Application.CentimetersToPoints(2)
            .RightMargin = Application.CentimetersToPoints(0.5)
            .TopMargin = Application.CentimetersToPoints(3)
            .BottomMargin = Application.CentimetersToPoints(1)
            .HeaderMargin = Application.CentimetersToPoints(1.5)
            .FooterMargin = Application.CentimetersToPoints(1.5)
        End With
        Range("F" & Zrowb) = WorksheetFunction. _
                        Sum(Range("F2", "F" & Zrowb - 1))
        Range(Cells(1, 1), Cells(Zrowb, 7)).Select
        With Selection.Borders
            .LineStyle = xlContinuous
            .Weight = xlHairline
        End With
            Range("A1").Select
End Sub

調査個所別シート作成のVBAのまとめ

kanseizaikohyop002

一連の流れとしては、これで在庫リスト作成コードについては終了です。

ソフト設計プランとして、在庫調査個所毎に在庫リストシートを作成できるようにしています。

1つの在庫調査個所について、在庫リスト作成終了後、次の調査個所へということになります。

その場合、同じようにオペレーションいただくと”先にできたシート”の後に”新しく調査した個所名のシート”が作成されます。

調査場所ごとのシートを統合した大きな1枚のシートを作り、その総合計を計算できるようにも出来ますが、

このソフトを利用するシチュエーションもそれぞれに違い、調査ボリューム・調査チーム数・使用PC数なども多様ですので、この部分については、ご利用の方がさらにカスタマイズしていただければと思います。

これからの作業としては、

  •  一つの在庫調査終了後に次の個所の在庫調査を行うために前データをクリアするコード
  •  ソフトの操作性を上げるためのユーザーフォームの設置

があります。

次の記事では、

「作業が終了した個所のデータをクリアーするVBA」を組み立てていきます。

短期間でエクセルVBAの独学習得を目指したいなら

kanseizaikohyop003

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

独習のための大切な7つのポイントは、上記記事にて解説しています。

独習によるVBA習得のキーワードは、出来るだけ多くの実例に触れること!です

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min