返品元(発信元)情報を表示するためのエクセルVBAを組み立てます。
チェックボックスを設置して、デジタル化した番線印も選択表示できるようにします。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は,
エクセルBOOK「返品了解申請.xlsm」の「返品依頼テンプレート」に、
発信元(返品元)情報を表示するためのVBAプログラム作りを行っていきます。
前回の記事の確認をしたいという方はこちら↓からお読みいただけます。

コンテンツ
返品元情報の表示のVBA作成の流れ

今回は、エクセルBOOK「返品了解申請.xlsm」の「スタート設定」シートを使います。
返品依頼の「発信元情報」を登録する入力欄を作成します。
- 「発信元情報」を登録する入力欄を作成します。
- 番線印と番線印情報を選択表示できるようにします。
ここで行うデータ処理は、「返品依頼テンプレート」に対して反映させます。
つまり、出版社別の返品依頼書を作成する時の、返品元情報ということになります。
なのでこの発信元情報の表示は、少なくとも「返品依頼テンプレート」に対しての書誌データ転記と同じタイミングで、行っておく必要があります。
情報表示のVBAコード作成

新しくモジュールを挿入してください。
(挿入の方法はこちら↓で確認できます。)

発信元情報の入力欄の作成
最初に「スタート設定」シートのセルサイズを決めていきます。
全体として
セル高さ・・・
シート全体をつかんで、「高さ:37ピクセル」にセットしてください。
セル幅・・・
シート全体をつかんで、「幅:72ピクセル」にセットしてください。
I列の幅を267ピクセルに、K列の幅を334ピクセルにします。
「発信元情報」はH2からL7
「番線印」はH12からL15
のセル範囲で作成します。
セル範囲の外枠を実線で囲みます。
「番線印」についてはセルのコピぺで番線印画像を移動します。
ですので「番線印」を置くセルには罫線が付かないようにします。(隣り合う4辺のセルを緩衝セルとします。)
「入力欄」の完成はこのようになります。

色付きセルの部分は、入力項目の表示になります。
VBAコードを組み立てる
VBAコードを組んでいきます。
プロシージャー名を「発信元情報」とします。
変数はこのように設定します。
- 「発信元(注文元)」・・・・・Ha
- 「部署名/担当者名」・・・・・Hb
- 「住所」・・・・・・・・・・・Hc
- 「電話番号」・・・・・・・・・Hd
- 「FAX番号」・・・・・・・・He
「返品依頼テンプレートシート」に表示するときには、
前に入力した情報に上書きされる状態になります。
Option Explicit
Sub 発信元情報()
Dim Ha As Variant
Dim Hb As Variant
Dim Hc As Variant
Dim Hd As Variant
Dim He As Variant
With Worksheets("スタート設定")
Ha = .Range("K3")
Hb = .Range("K4")
Hc = .Range("K5")
Hd = .Range("K6")
He = .Range("K7")
End With
With Worksheets("返品依頼テンプレート")
.Range("C31") = Ha
.Range("C32") = Hb
.Range("C33") = Hc
.Range("C34") = Hd
.Range("C35") = He
End With
End Sub
番線印については、「番線印」と「番線印情報」を選択できるようにします。
チェックボックスを挿入して行います。
デジタル番線印の自作方法は、この記事を参考にできます。

チェックボックスは「開発タブ」の「挿入」より「ActiveXコントロール」のチェックボックスを選択します。

今回のチェックボックスは、1つのみ選択・2つ選択・選択無しの3パターンがあります。
- 「1つ選択」・・・チェックした方が表示されます。
- 「2つ選択」・・・「番線印」が表示されます。
- 「選択無し」・・・何も表示されません。
VBAコードを組みます。
プロシージャー名を「番線印転記」とします。
VBAコードは以下ようになりますが、「番線印」をコピーペーストするので、
連絡表の「書店印欄」の外枠線が消えてしまいますので、プロシージャー名を「線引き直し」として、
外枠線を復活させるVBAを組んでおきます。
Sub 番線印転記()
Dim BNa As Boolean
Dim BNb As Boolean
Worksheets("スタート設定").Select
If Worksheets("スタート設定").CheckBox1.Value = True Then
BNa = True
End If
If Worksheets("スタート設定").CheckBox2.Value = True Then
BNb = True
End If
If BNa = True And BNb = True Then
BNa = True
BNb = False
End If
Worksheets("返品依頼テンプレート").DrawingObjects.Delete
If BNa = True Then
Range("I14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A31")
Range("I14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A40")
Range("I14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A66")
ElseIf BNb = True Then
Range("K14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A31")
Range("K14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A40")
Range("K14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A66")
End If
Call Module2.線引き直し
End Sub
プロシージャー名を「線引き直し」

Sub 線引き直し()
Worksheets("返品依頼テンプレート").Select
With Range("A40").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Range("A66").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End Sub
これで発信元情報の表示は完了です。
今回作成したコード

今回作成したコードはこのようになります。
Option Explicit
Sub 発信元情報()
Dim Ha As Variant
Dim Hb As Variant
Dim Hc As Variant
Dim Hd As Variant
Dim He As Variant
With Worksheets("スタート設定")
Ha = .Range("K3")
Hb = .Range("K4")
Hc = .Range("K5")
Hd = .Range("K6")
He = .Range("K7")
End With
With Worksheets("返品依頼テンプレート")
.Range("C31") = Ha
.Range("C32") = Hb
.Range("C33") = Hc
.Range("C34") = Hd
.Range("C35") = He
End With
End Sub
Sub 番線印転記()
Dim BNa As Boolean
Dim BNb As Boolean
Worksheets("スタート設定").Select
If Worksheets("スタート設定").CheckBox1.Value = True Then
BNa = True
End If
If Worksheets("スタート設定").CheckBox2.Value = True Then
BNb = True
End If
If BNa = True And BNb = True Then
BNa = True
BNb = False
End If
Worksheets("返品依頼テンプレート").DrawingObjects.Delete
If BNa = True Then
Range("I14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A31")
Range("I14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A40")
Range("I14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A66")
ElseIf BNb = True Then
Range("K14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A31")
Range("K14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A40")
Range("K14").Copy _
Destination:=Worksheets("返品依頼テンプレート").Range("A66")
End If
Call Module2.線引き直し
End Sub
Sub 線引き直し()
Worksheets("返品依頼テンプレート").Select
With Range("A40").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Range("A66").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End Sub
返品元情報表示VBA作成のまとめ

これで返品了解書作成部分までは完了しました。
次回は、作成後 次に利用するときのための「データをクリアー」する作業について行っていきます。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

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