必要なデータを転記するVBAコードを組む。払込取扱票への印字

furidataidoeyecatch

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

 

今回も払込取扱票へのデータの印字を行うための仕組みづくりを行っていきます。

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

 

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

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

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

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

 

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

furinyusheeteyecatcha振込用紙に印字する取引情報を入力するシートを作成。ゆうちょ払込取扱票印字

 

データ転記のエクセルVBA作成の考え方

 

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

 

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

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

 

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

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

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

 

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

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

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

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

 

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

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

からデータを取ります。

 

それぞれの設定データを転記するVBAコード

 

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

 

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

 

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

先回に組み立てたVBAの「Sub テンプレシート()」と同じ、Module1に記述します。

MEMO

ここで使用する「For~Next」文の使い方については、こちらの記事が参考になります。

fornextirekoeyecatchエクセルVBA!For~Nextのループと入れ子構造をVBA最速理解

 

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

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

Sub 利用者側設定A()

 

Dim i As Long

 For i = 1 To 15
  Cells(4, 1 + i) = Cells(11, i + 26).Value
 Next i
  Cells(5, 3) = Cells(12, 30).Value

End Sub

 

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

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

Sub 利用者側設定B()

 

Dim i As Long, j As Long

 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 Sub

 

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

 

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

ボタンの設置方法は、いつもの通りですが、

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

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

 

MEMO

コマンドボタンの設置方法はこちら↓の記事も参考になります。

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

 

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

furidataido001a

 

 

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

furidataido002a

 

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

 

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

furidataido006a

 

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

 

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

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

 

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

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

 

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

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

 

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

Sub 入力シート転記()

 

Dim aR As Long
Dim aN As Long
Dim aDay As String
Dim aCus As String
Dim aBill As Long
Dim aTax As Integer
Dim aNote As String
Dim Bnc As Integer
Dim i As Long , j AS Long

DIm CP As Long

 

 Worksheets(“発行データ”).Select
  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))

 Worksheets(“入力シート”).Select
  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 Sub

 

MEMO

「If条件文」の条件設定の方法についてはこちら↓の記事が参考になります。

vbaifjyokeneyecatch「If条件文」のVBAコードの組み方。条件の絞り方を最速に理解。

Mid関数についてはこちら↓の記事を参考にしてください。

vbamideyecstchMid関数・Right関数・Left関数は文字列中の文字を切り出します

 

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

 

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

「オブジェクトエクスプローラー」で「データ選択」をダブルクリック

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

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

と記述します。furidataido003a

 

 

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

 

今回のVBAコードはこのようになります。Module1に記述します。

 

furidataido004a

 

今回で、振込用紙(払込取扱票)に印字するデータを選択するための作業は完了です。

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

 

次に印刷用テンプレートに転送したときの表示をマッチングさせるVBAを組み立てていきます。

 

その理由は、

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

というということです。

 

このVBAの組み立てが、「振込用紙(払込取扱票)の印字」というテーマの一番のヤマ場となります。

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

 

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

 

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

けれども、

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

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

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

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

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

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

ハッキリ言って、

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

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

 

 

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

「エクセルVBA最速理解」の記事一覧を開く

 

ここまでお読みいただきありがとうございました。

 

 

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