返品了解の依頼書を使用後の情報データを、クリアするエクセルVBAと、実行のコマンドボタンをワークシートに作成します。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は,
エクセルBOOK「返品了解申請.xlsm」で返品了解依頼書を作成した後、
次回の使用のために、利用した返品データをクリアするVBAプログラムを作ります。
そしてこのプログラムを実行するための実行ボタンを「スタート設定」シートに設置します。
前回の記事の確認をしたいという方はこちら↓からお読みいただけます。
コンテンツ
返品了解情報をクリアするVBA作成の流れ
利用済みの情報のクリアする部分は「各出版社別」シートの削除と「返品本分類」シートのクリアになります。
「返品依頼テンプレート」には、発信元情報を入力していますが、その度に変わるものではありませんので、
このクリアの対象とはしません。
- 「各出版社別」シートの削除 シートそのものを削除します。
- 「返品本分類」シートのクリア シート状態をデフォルトの状態に戻します。
このクリアのVBAコードによって、エクセルにある作成したデータはすべて消えてしまいます。
エクセルのデータを保存したい場合は、
このクリアのVBAを作動させる前に、エクセルBOOK「返品了解申請.xlsm」を別名保存しておきましょう。
保存する時の注意点
保存名を変えて保存すること。(名前を付けて保存)
マクロなしBOOK(拡張子.xlsx)で保存します。(少しデータ量が軽くなります)
情報クリアのVBAコード作成
今回も新しく「返品了解申請.xlsm」に標準モジュール(Module3)を挿入します。
挿入の方法はこちら↓で確認できます。
「VBE(ビジュアルベーシックエディター)を起動する」
各出版社別シートの削除
各出版社別シートの削除は「返品本分類」シートのA列の値(ページ数)に基づいて行っていきます。
A列の値が、それぞれのシート名になっているからです。
プロシージャー名を「各ページクリア」とします。
変数をこのように設定します。
- 「返品本分類のデータ行数」・・・・・CRow
- 「削除するシートのページNO.」・・SN
- 「ループ処理のループ回数」・・・・・c
条件分岐については、各出版社別シート作成の時と同じ方法で行います。
ワークシートを変数化する3つの手法 オブジェクト変数など データ入力済セルの最終行番号を取得する For~Nextのループと入れ子構造をVBA最速理解 Gotoステートメントでコードをジャンプ!毒と薬の2面性Option Explicit
Sub 各ページクリア()
Dim CRow As Long
Dim SN As Variant
Dim c As Long
Worksheets("返品本分類").Select
CRow = Cells(Rows.Count, 1).End(xlUp).Row
If CRow <= 1 Then
MsgBox "クリアするシートリストがないか、" & _
"クリアするシートがありません。"
Exit Sub
End If
For c = 1 To CRow
SN = Range("A" & c).Value
If c = 1 Then GoTo step1
If SN = Range("A" & c - 1).Value Then GoTo step2
step1:
Application.DisplayAlerts = False
Worksheets(SN).Delete
step2:
Worksheets("返品本分類").Select
Next c
Application.DisplayAlerts = True
End Sub
返品本分類シートのクリア
シートクリアーを目的のメソッド別にVBA最速理解プロシージャー名を「本分類クリア」とします。
シートの状態をデフォルトに戻すのには、
「.UseStandard」プロパティを使います。
Sub 本分類クリア()
With Worksheets("返品本分類")
.Cells.Clear
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
作成したクリアコード
クリアコードはこのようになります。
Option Explicit
Sub 各ページクリア()
Dim CRow As Long
Dim SN As Variant
Dim c As Long
Worksheets("返品本分類").Select
CRow = Cells(Rows.Count, 1).End(xlUp).Row
If CRow <= 1 Then
MsgBox "クリアするシートリストがないか、" & _
"クリアするシートがありません。"
Exit Sub
End If
For c = 1 To CRow
SN = Range("A" & c).Value
If c = 1 Then GoTo step1
If SN = Range("A" & c - 1).Value Then GoTo step2
step1:
Application.DisplayAlerts = False
Worksheets(SN).Delete
step2:
Worksheets("返品本分類").Select
Next c
Application.DisplayAlerts = True
End Sub
Sub 本分類クリア()
With Worksheets("返品本分類")
.Cells.Clear
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
スタート設定シートのマクロ実行ボタン設置
「スタート設定」シートに作動ボタンを設置していきます。
このボタンのためのプロシージャーを設置する新たなモジュール(Module4)を挿入します。
作動させるプロシージャーの順番を間違えるとうまく動かないことになりますので、
記述順を間違えないようにしてください。
ボタン関連付けのプロシージャー
部品化プロシージャーでCallステートメントは必須①返品依頼の作成についてのボタンを作成します。
プロシージャー名を「返品依頼作成」として、このボタンに関連付けします。
Option Explicit
Sub 返品依頼作成()
Call Module1.テンプレコピー
Call Module1.データ移動
Call Module1.電話番号検索
End Sub
②発信元表示のボタンを設置します。
プロシージャー名を「発信元表示」として、このボタンに関連付けします。
Sub 発信元表示()
Call Module2.発信元情報
Call Module2.番線印転記
End Sub
③オールクリアのボタンを設置します。
プロシージャー名を「オールクリア」として、このボタンに関連付けします。
Sub オールクリア()
Call Module3.各ページクリア
Call Module3.本分類クリア
End Sub
実行ボタンの設置
ボタンの設置方法は、こちら↓を参考にしてください。
コマンドボタンをシートに設置する2つの方法返品了解情報のクリアVBAと実行ボタン設置のまとめ
データをクリアする方法と「スタート設定」シート作成はこれで完了になります。
データをエクセルで保存する時は、ファイル名を変えて保存するようにしてください。
データの保存目的であれば、「マクロなしBOOKでの保存」(.xlsx)で保存しましょう。
今回で、エクセルBOOK「返品了解申請.xlsm」は完成です。
先に完成しているエクセルBOOK「返品書誌情報.xlsm」と
エクセルBOOK「FAX電話番号.xlsx」
の3点は同じディレクトリ(同じフォルダー)に置いてください。
(設置場所をバラバラに変えてしまうと、参照エラーでVBAが止まってしまいます。)
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。