こんにちは、じゅんぱ店長(@junpa33)です。
今回も払込取扱票へのデータの印字を行うための仕組みづくりを行っていきます。
この記事で行うことは、先回作成した「入力シート」のテンプレート転送用セルスペース(入力表)へ、データを送るVBAを組み立てるということです。
先回までに作成した入力シートに、ボタンクリック一つでデータが入るようにエクセルVBAコードを組み立てます。
桁数のある数字も分解して1文字1文字転送入力していきます。
基本1セル1文字ということになります。
数字は、数字を扱う感覚ではなく文字を扱う感覚です。
その前に、前回の記事を読み返すにはこちら↓からご覧になれます。
振込用紙に印字する取引情報を入力するシートを作成。ゆうちょ払込取扱票印字
コンテンツ
データ転記のエクセルVBA作成の考え方
「印刷用テンプレート」に印刷するデータ(口座番号や加入者名など)を指定して所定のセルに表示します。
「利用者側設定」表からの転記
請求時の入金情報・・・・口座記号、口座番号、加入者名を転記します。
支払い時の出金情報・・・口座記号、口座番号、加入者名、振替金額、自社情報
「発行データ」シートからの転記
請求時の請求先の情報・・通信欄、依頼人、金額
先回作成した「データ選択」ユーザーフォームの「選択」ボタンで転記できるようにセットします。
データセットの基本的な考え方は、
購入者に金額を請求する時は、
- 「利用者側設定」の請求時の入金情報で口座記号と口座番号、加入者名
- 「発行データ」シートからの情報データで請求金額、依頼人の氏名と住所、通信欄
からデータを取ってきます。
利用者が請求に対して金額を振替する時は、
- 「利用者側設定」の支払時の出金情報で、相手振替先の口座記号と口座番号、加入者名
- 振替金額、自社情報
からデータを取ります。
それぞれの設定データを転記するVBAコード
利用者側の2つの設定と「発行データ」シートからの転記についてVBAコードを作成していきます。
利用者側設定のデータ転記
「利用者側設定」にあるデータを転送用入力表へ移動させるVBAです。
先回に組み立てたVBAの「Sub テンプレシート()」と同じ、Module1に記述します。
請求時の入金情報については
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」プロシージャーの実行ボタンを設置します。
ボタンの設置方法は、いつもの通りですが、
設置方法の確認はこちら↓で確認いただけます。
「利用者側設定A」プロシージャーの実行ボタンを「基本口座設定」とします。
設置したボタンを右クリックで「マクロの登録」をこのように指定します。
「利用者側設定A」プロシージャーの実行ボタンを「振込先口座金額設定」とします。
設置したボタンを右クリックで「マクロの登録」をこのように指定します。
「発行データ」シートからの移動
「発行データ」シートをこのようにします。
「発行データ」からのデータ移動
「発行データ」シートに登録されているデータ(請求先資料)から請求先(依頼人)を選択して、
「利用者側設定」にあるデータを転送用入力表へ移します。
「発行データ」のデータ資料はどこから持ってきてもらってもOKです。特に指定はありません。手打ちで打ち込んでもらってもいいです。
ただし、「請求金額は数値」でなければなりません。
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
「If条件文」の条件設定の方法についてはこちら↓の記事が参考になります。
「If条件文」のVBAコードの組み方。条件の絞り方を最速に理解。
Mid関数についてはこちら↓の記事を参考にしてください。
データ移動の実行ボタンのセット
前回作成した「データ選択」ユーザーフォームの「選択」ボタンの起動セットアップをします。
「オブジェクトエクスプローラー」で「データ選択」をダブルクリック
「コードの表示」アイコンをクリック
Private Sub データ選択_Click()
入力シート転記
End Sub
データを転記するVBAコード作成のまとめ
今回のVBAコードはこのようになります。Module1に記述します。
今回で、振込用紙(払込取扱票)に印字するデータを選択するための作業は完了です。
購入者が、自店に振込んで(振替えて)もらう場合、自店が支払いで振込む(振替える)場合の両方のデータセッティングを行えるようになりました。
次に印刷用テンプレートに転送したときの表示をマッチングさせるVBAを組み立てていきます。
その理由は、
テンプレートは、印刷範囲の理由で「上下逆さま」に作っています。
今回作成した「入力シート」は正立になっていますので、この移動には
「正立」と「倒立」の状態を一致させる必要があります。
というということです。
このVBAの組み立てが、「振込用紙(払込取扱票)の印字」というテーマの一番のヤマ場となります。
「数字」と「文字列(文章)」の場合に分けて説明したいと思います。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたいテーマを纏めてみました。
ここまでお読みいただきありがとうございました。