振替用データを選択転記するVBA。請求元と振込元に両対応

furidataidoeyecatch

払込取扱票への印字の準備です。必要なデータをテンプレートに配置するためのデータ選択収集・転記のエクセルVBAコード作成です。

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

この記事では、先回作成した「入力シート」のテンプレート転送用セル(入力表)へ、データを送るVBAを組み立てます。

先回までに作成した入力シートに、ボタンクリック一つでデータが入るようにエクセルVBAコードを組み立てます。

桁数のある数字も分解して1文字1文字転送入力していきます。

基本1セル1文字ということになります。

数字は、数字を扱う感覚ではなく文字を扱う感覚です。

その前に、前回の記事を読み返すにはこちら↓からご覧になれます。

furinyusheeteyecatcha 請求金額などを用紙印字する仕組みづくり。払込取扱票印字

データ転記のVBAコード作成の考え方

furidataido007

「印刷用テンプレート」に印刷するデータ(口座番号や加入者名など)を指定して所定のセルに表示します。

「利用者側設定」表からの転記

請求時の入金情報・・・・口座記号、口座番号、加入者名を転記します。
支払い時の出金情報・・・口座記号、口座番号、加入者名、振替金額、自社情報

「発行データ」シートからの転記

請求時の請求先の情報・・通信欄、依頼人、金額

先回作成した「データ選択」ユーザーフォームの「選択」ボタンで転記できるようにセットします。

データセットの基本的な考え方は、

購入者に金額を請求する時は、

  •  「利用者側設定」の請求時の入金情報で口座記号と口座番号、加入者名
  •  「発行データ」シートからの情報データで請求金額、依頼人の氏名と住所、通信欄

からデータを取ってきます。

利用者が請求に対して金額を振替する時は、

  •  「利用者側設定」の支払時の出金情報で、相手振替先の口座記号と口座番号、加入者名
  •  振替金額、自社情報

からデータを取ります。

請求時と振込時に応じたデータを転記するVBA

furidataido008

利用者側の2つの設定と「発行データ」シートからの転記についてVBAコードを作成していきます。

利用者側設定のデータ転記

「利用者側設定」にあるデータを転送用入力表へ移動させるVBAです。

先回に組み立てたプロシージャー「テンプレシート」と同じ、Module1に記述します。

請求時の入金情報については

プロシージャー名を「利用者側設定A」とします。

fornextirekoeyecatch For~Nextのループと入れ子構造をVBA最速理解
VBA
Sub 利用者側設定A()
    Dim i As Long
        With Worksheets("入力シート")
            For i = 1 To 15
                .Cells(4, 1 + i) = .Cells(11, i + 26).Value
            Next i
                .Cells(5, 3) = .Cells(12, 30).Value
        End With
End Sub

支払時の出金情報については

プロシージャー名を「利用者側設定B」とします。

VBA
Sub 利用者側設定B()
Dim i As Long, j As Long
    With Worksheets("入力シート")
        For i = 1 To 15
            .Cells(4, 1 + i) = .Cells(17, i + 26).Value
        Next i
            .Cells(5, 3) = .Cells(18, 30).Value
    
        For j = 1 To 8
            .Cells(4, 17 + j) = .Cells(22, j + 27).Value
        Next j
            .Cells(14, 3) = .Cells(24, 28).Value
            .Cells(16, 3) = .Cells(26, 28).Value
            .Cells(8, 2) = .Cells(29, 28).Value
    End With
End Sub

プロシージャー実行ボタンの設置

「利用者側設定A」プロシージャーの実行ボタンと「利用者側設定B」プロシージャーの実行ボタンを設置します。

ボタンの設置方法の確認はこちら↓で確認いただけます。

データ抽出ボタンを設置する。

vbabuttoneyecatch コマンドボタンをシートに設置する2つの方法

「利用者側設定A」プロシージャーの実行ボタンを「基本口座設定」とします。
設置したボタンを右クリックで「マクロの登録」をこのように指定します。

furidataido001a

「利用者側設定B」プロシージャーの実行ボタンを「振込先口座金額設定」とします。
設置したボタンを右クリックで「マクロの登録」をこのように指定します。

furidataido002a

「発行データ」シートからのデータ転記

「発行データ」シートをこのようにします。

furidataido006a

「発行データ」からのデータ移動

「発行データ」シートに登録されているデータ(請求先資料)から請求先(依頼人)を選択して、

「利用者側設定」にあるデータを転送用入力表へ移します。

「発行データ」のデータ資料はどこから持ってきてもらってもOKです。特に指定はありません。手打ちで打ち込んでもらってもいいです。

ただし、「請求金額は数値」でなければなりません。

転記のポイント

ここでの、データ移動の注意ポイントは、「請求金額」の数字をを一つづつに分解して、

1つのセルに1つの数字をはめ込むようにセッティングすることです

プロシージャー名を「入力シート転記」とします。

VBA
Sub 入力シート転記()
    Dim aR, aN As Long
    Dim aDay, aCus, aAd, aNote As String
    Dim aBill, i, j As Long
    Dim aTax, Bnc, CP As Integer
        With Worksheets("発行データ")
            aR = ActiveCell.Row
            aN = .Range("A" & aR).Value
            aDay = .Range("B" & aR).Value
            aCus = .Range("C" & aR).Value
            aBill = .Range("D" & aR).Value
            aAd = .Range("E" & aR).Value
            aNote = .Range("F" & aR).Value
            Bnc = Len(CStr(aBill))
        End With
        With Worksheets("入力シート")
            .Range("B8") = aN & " , " & aDay & vbCrLf & aNote
            .Range("C16") = aCus
            .Range("C14") = aAd
            CP = 8 - Bnc
            If CP > 0 Then
                For j = 1 To CP
                    .Cells(4, 17 + j).Value = ""
                Next j
            End If
            For i = 1 To Bnc
                .Cells(4, 17 + CP + i).Value = Mid(aBill, i, 1)
            Next i
        End With
End Sub
vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する vbaifjyokeneyecatch If条件文のVBAコードの組み方。条件の絞り方を最速理解 vbamideyecstch Mid関数・Right関数・Left関数は文字列中の文字を切り出す

データ移動の実行ボタンのセット

前回作成した「データ選択」ユーザーフォームの「選択」ボタンの起動セットアップをします。

「プロジェクトエクスプローラー」で「データ選択」をダブルクリックしてユーザーフォームモジュールを開きます。

「コードの表示」アイコンをクリック

VBA
Option Explicit

Private Sub データ選択_Click()
        Call Module1.入力シート転記
End Sub

データ転記のVBAコード作成のまとめ

furidataido009

今回のVBAコードはModule1に記述しました。

振込用紙(払込取扱票)に印字するために必要なデータを選択するVBAコード記述は完了です。

購入者が、自店に振込んで(振替えて)もらう場合と、逆に自店が支払いで振込む(振替える)場合の両方のデータ入力を行えるようになりました。

次回からは印刷用テンプレートに転記した文字を正常に印刷できるように、表示と配置を適切にマッチングさせるVBAを組み立てていきます。

テンプレートは、印刷範囲の理由で「上下逆さま」に作っています。
今回作成した「入力シート」は正立になっていますので、この移動には
「正立」と「倒立」の状態を一致させる必要があります。

このVBAの組み立てが、「振込用紙(払込取扱票)の印字」の ” ウラ技 ” とも言うべきものになります。

「数字」と「文字列(文章)」の場合に分けて説明したいと思います。

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

furidataido010

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

けれども、

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

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

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

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

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

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

ハッキリ言って、

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

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

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

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

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

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

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

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

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

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

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min