金種表作成エクセルVBAの作り方③VBAで金種表を印刷する

kinsyusaku3eyecatch

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

 

今回は、「金種表作成エクセルソフト」の作成で、金種表の印刷モードのVBAコードを組み立てていきます。

シートで言うと、「印刷用」シートの部分の説明となります。

 

その前に、先回の記事をもう一度チェックするにはこちら↓になります。

金種表作成エクセルVBAの作り方②自動計算の金種数量表が作れる

 

金種表作成関係の記事はこちらです。

「金種表作成」の記事一覧を開く

 

印刷のスタイルを考えます

 

レジの締め切りなど各金種の枚数から合計を計算、確定させるときの紙資料としての印刷

 

現金支払いの人件費など個別にしかも釣銭なく準備したい場合、相手先ごとに準備する金種が分かるような紙資料としての印刷

の、大きく2つのケースがあると思います。

 

「印刷用」シートに印刷用の金種表を出力し、A6サイズの用紙で印刷します。

 

印刷用のVBAコード

 

これからのコードは、「Module2」に記述します。

金種合計表示での印刷

 

金種金額計算印刷のコード

 

プロシージャー名を「金額計算印刷」とします。

 

最初に、「印刷用」シートを初期状態に戻します。

今回は「設定」シートから「印刷用」シートへはコピーペーストではなく、セルデータの移動(転記)で行っています。

金種表の作成日時も同時に表示されるようになっています。

 

このコードでは、印刷プレビューまで表示するようにしています。

実際の印刷はプレビューの「印刷ボタン」で行います。

 

MEMO

For ~ Nextについてはこちらが参考になります。

エクセルVBA!For~Nextの入れ子ループを最速に理解する

With ~ End Withについてはこちらが参考になります。

With~End Withの使い方。VBAコードを簡潔に記述する

Format関数の使い方についてはこの記事を参考にしてください。

エクセルVBA Format関数をテッパン関数にする!実務で頻度の高い書式と使用例

 

Sub 金額計算印刷()

 

シートset
ASheet.Select
シートクリア

 

Dim Bcol As Long, x As Long

  For p = 2 To 13
    For q = 1 To 3
      ASheet.Cells(p + 1, q) = SSheet.Cells(p, q + 4)
    Next q
  Next p

  With ASheet
    .Range(“A:A”).Columns.ColumnWidth = 18
    .Range(“B:B”).Columns.ColumnWidth = 15
    .Range(“C:C”).Columns.ColumnWidth = 21
    .Range(“C4”, “C14”).NumberFormatLocal = “#,##0円”
    .Cells.Font.Size = 13
    .Cells.Font.Bold = True
  End With

 

  With Range(“A1”)
    .Value = “金種表”
    .RowHeight = 33
    .Font.Size = 25
    .Font.Name = “MS P明朝”
  End With

 

  With Range(“C2”)
    .Value = Format(KSheet.Cells(1, 2), “yyyy/mm/dd hh:nn:ss AM/PM”)
    .Font.Size = 10
  End With

 

  With Range(“A2”)
    .Value = SSheet.Range(“F1”)
    .RowHeight = 24
    .Font.Size = 18
    .Font.Name = “MS P明朝”
  End With

 

  With Range(“A3”, “C14”)
    .RowHeight = 15
    .Borders.LineStyle = xlContinuous
  End With

 

  With Range(“A3”, “C3”)
    .RowHeight = 24
    .Font.Size = 18
    .HorizontalAlignment = xlCenter
    .Font.Name = “MS P明朝”
  End With

  With Range(“A14”, “C14”)
    .RowHeight = 24
    .Font.Size = 18
    .HorizontalAlignment = xlCenter
    .Font.Name = “MS P明朝”
  End With

 

  ASheet.PrintOut from:=1, To:=1, Preview:=True

 

End Sub

 

実行ボタンの設置

 

「設定」シートの作り方で解説しました「金種金額計算印刷」ボタンにプロシージャーを紐づけします。

 

紐づけの方法については、先回の説明と同じになります。

こちらでも 「動作ボタンを設置します。」で確認いただけます。

 

実際の印刷サンプル

「ここに項目を入力」の部分は、「設定」シートの入力欄にレジ番号などを入力してください。

kinsyu016a

 

金種数量表示での印刷

 

相手先選択印刷のコード

 

プロシージャー名を「相手先印刷」とします。

先ほどと同様に最初に、「印刷用」シートを初期状態に戻します。

どの「相手先・項目」をピックアップして印刷するかを指定するために、セルをカーソルで指定(アクティブ)にします。

どのセルがアクティブになっているかを調べて、それの行番号を変数化します。

作成日時も印刷されます。

 

印刷プレビュー画面が表示されます。内容をチェックしてプレビューの印刷ボタンで印刷になります。

 

MEMO

Sum関数についてはこちらが参考になります。

エクセルVBA SUM関数で合計計算!実務で使えるコード作成

With ~ End Withについてはこちらが参考になります。

With~End Withの使い方。VBAコードを簡潔に記述する

Format関数の使い方についてはこの記事を参考にしてください。

エクセルVBA Format関数をテッパン関数にする!実務で頻度の高い書式と使用例

 

Sub 相手先印刷()

 

シートset
ASheet.Select
シートクリア

 

Dim Bcol As Long, x As Long

 

  KSheet.Select
    Bcol = Cells(1, Columns.Count).End(xlToLeft).Column
    Actrow = ActiveCell.Row

 

  For x = 4 To Bcol + 1
    ASheet.Range(“A” & x) = KSheet.Cells(1, x – 1)
    ASheet.Range(“B” & x) = KSheet.Cells(Actrow, x – 1)
    ASheet.Range(“C” & x) = ASheet.Range(“A” & x) * ASheet.Range(“B” & x)
  Next x

 

  ASheet.Select
    Range(“A” & x) = “合計”
    Range(“B” & x) = WorksheetFunction.Sum(Range(Cells(4, 2), Cells(x, 2)))
    Range(“C” & x) = WorksheetFunction.Sum(Range(Cells(4, 3), Cells(x, 3)))

 

    With ASheet
      .Range(“A:A”).Columns.ColumnWidth = 18
      .Range(“B:B”).Columns.ColumnWidth = 15
      .Range(“C:C”).Columns.ColumnWidth = 21
      .Range(“C4”, “C” & x).NumberFormatLocal = “#,##0円”
      .Cells.Font.Size = 13
      .Cells.Font.Bold = True
    End With

 

    With Range(“A1”)
      .Value = “金種表”
      .RowHeight = 33
      .Font.Size = 25
      .Font.Name = “MS P明朝”
    End With

 

    With Range(“B1”)
      .Value = “金種数量計算”
      .Font.Size = 15
      .Font.Name = “MS P明朝”
    End With

    With Range(“A2”)
      .Value = KSheet.Cells(Actrow, 1)
      .RowHeight = 24
      .Font.Size = 21
      .Font.Name = “MS P明朝”
    End With

 

    With Range(“C2”)
      .Value = Format(KSheet.Cells(1, 2), “yyyy/mm/dd hh:nn:ss AM/PM”)
      .RowHeight = 24
      .Font.Size = 10
    End With

 

    With Range(“A3”, “C” & x)
      .RowHeight = 15
      .Borders.LineStyle = xlContinuous
    End With

 

    With Range(“A3”, “C3”)
      .RowHeight = 24
      .Font.Size = 18
      .HorizontalAlignment = xlCenter
      .Font.Name = “MS P明朝”
    End With

 

    Range(“A3”) = “金種”
    Range(“B3”) = “数量”
    Range(“C3”) = “金額”

 

    With Range(“A” & x, “C” & x)
      .RowHeight = 24
      .Font.Size = 18
      .HorizontalAlignment = xlCenter
      .Font.Name = “MS P明朝”
    End With

 

    With ASheet.PageSetup
      .TopMargin = 28.6
      .BottomMargin = 28.6
      .LeftMargin = 57.2
      .RightMargin = 28.6
      .Orientation = xlLandscape
    End With

 

  ASheet.PrintOut from:=1, To:=1, Preview:=True

End Sub

 

「For~Nextの入れ子」文については「エクセルVBA!For~Nextの入れ子ループを最速に理解する」の記事が参考になります。

 

実行ボタンの設置

 

「金種数量」シートに「相手先選択印刷」ボタンを設置し、プロシージャーを紐づけします。

ボタンは、「A1」セルの位置に設置します。

紐づけの方法については、先回の説明と同じになります。

こちらでも 「動作ボタンを設置します。」で確認いただけます。

 

実際の印刷サンプル

 

2000円札を使う場合と使わない場合の印刷例です。

kinsyu023a kinsyu022a

 

金種表印刷のまとめ

 

 

画面でチェックして準備するだけではなく、紙化して提示しなければいけない場合もあるかとは思います。

既製の金種表伝票も販売されていますが、これを利用いただくと、

大きく書式は変わるかと思いますが、電卓をはじくこともなく必要な伝票も作成していただけると思います。

 

便利にお使いいただき、業務時間と業務ミスの削減につなげていただければ嬉しく思います。

 

このソフトの全体の取り扱い方法については、このテーマの第1記事にありますが、

こちら↓をご覧いただければと思います。

無料DL金種表作成エクセルソフト完全版!現金出納業務者には必携

 

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたいテーマを纏めてみました。

「VBA最速理解」の記事一覧を開く

 

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

 

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