次回利用のために、利用の終わったデータをクリアするVBAコードを組み立てます。
追加で作成した出版社シートだけを削除する、別ブックに転記したデータだけを削除するなど。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は,
「返品了解申請.xlsm」での作業終了後に、
次回の使用のために今あるデータをクリアーするVBAを組み立てます。そしてそれをボタンで起動できるようにします。
データのクリアーは自動で行うこともできますが、一時的にデータを保存したいこともあるかと思いますので、
ボタンクリックでのクリアー操作ということにします。
その前に、
先回の返品了解書作成記事はこちら↓からご確認いただけます。
データのあるブックから別のエクセルに値を転送するVBAコンテンツ
入力データ利用後のクリアコード作成の流れ
データをクリアするコード設計はこのようにします。
- 各出版社別シートを削除します。
- 「出版社リスト」シートをクリアします。
- 「抽出データ」シートをクリアします。
- 「操作ボタン」シートにクリアボタンを設置します。
- 「返品了解申請.xlsm」の「返品本分類」シートクリアとクリアボタン設置
クリアの実行は、「返品書誌情報.xlsm」の「操作ボタン」シートにあるクリアボタンを押すことで行います。
また、
「返品書誌情報.xlsm」で作成したデータは、次の「返品了解申請.xlsm」に引き継がれます。
作業途中で一旦休止保存する場合、
「操作ボタン」シートで「データ転送連携実行」ボタンをクリック(VBAの実行)していない場合は、そのまま上書き保存します。
「データ転送連携実行」ボタンをクリック後(VBAの実行後)に、その転送されてしまったデータを修正したい場合は、
「返品了解申請.xlsm」の転送先「返品本分類」シートのデータを一旦クリアする必要があります。
その場合のクリア用のVBAを準備します。(VBA組み立て作業⑤)
利用後データのクリアコードの組み立て
「返品書誌情報.xlsm」に新たな標準モジュールを挿入します。
(挿入の方法はこちら↓で確認できます。)
「VBE(ビジュアルベーシックエディター)を起動する」
各出版社シートを削除するVBA
各出版社ごとのシートを削除するVBAの組み立て方はいくつか考えることが出来ます。
今回は、「出版社リスト」のデータ作成したそれぞれのシートの逆プロセスを行っていきます。
エクセルのデフォルト表示では、シートを削除するときには ” 警告 ” がウインドウ表示されます。
この時にはVBAの動作が中断されてしまいますので、進行が中断されないようにする工夫が必要です。
プログラムとして、” 警告 ” がウインドウ表示されないようにするVBAコードを記述しておきます。
そしてこの一連のVBAが終了した後は、 ” 警告 ” 表示が再開されるようにしておきます。
プロシージャー名を「出版社別シートCL」とします。
Sub 出版社別シートCL()
・・・・
End Sub
このVBAで使用する変数をこのようにします。
- 「出版社リストに掲載の出版社数」・・SRow
- 「削除する出版社名」・・・・・・・・SN
もし、出版社別シートが一部”シート削除”されていた場合
「出版社リスト」にある出版社の出版社別シートが揃っていない場合は、VBAエラーが起こります。
そこで、その場合は無視して次へ進むようにコードを作っていきます。
関連記事
Gotoステートメントでコードをジャンプ!毒と薬の2面性 ワークシートを変数化する3つの手法 オブジェクト変数など データ入力済セルの最終行番号を取得する For~Nextのループと入れ子構造をVBA最速理解Option Explicit
Sub 出版社別シートCL()
Dim SRow, t As Long
Dim SN As String
Worksheets("出版社リスト").Activate
If Range("A1").Value <> "" Then
SRow = Cells(Rows.Count, 1).End(xlUp).Row
For t = SRow To 1 Step -1
SN = Range("A" & t).Value
On Error GoTo step2
Worksheets(SN).Select
Application.DisplayAlerts = False
Worksheets(SN).Delete
Worksheets("出版社リスト").Activate
step2:
Next t
Application.DisplayAlerts = True
End If
End Sub
「出版社リスト」シートのクリア
このシートのクリアは、A列をクリアするだけでOKですが、
「セル幅を変えて見やすくした。」とか「メモ書きを別セルに書いている」など
している場合には、シート状態をデフォルトにした方が良いと思います。
以前の別記事でも触れましたが、
「セルのUseStandardプロパティ」でセルの高さと幅を元に戻します。
プロシージャー名を「出版社リストCL」とします。
With~End Withの使い方。VBAコードを簡潔に記述するSub 出版社リストCL()
Worksheets("出版社リスト").Cells.Clear
With Worksheets("出版社リスト")
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
「抽出データ」シートのクリア
「抽出データ」シートのクリアの場合も「出版社リスト」のクリアと同様です。
プロシージャー名を「抽出データCL」とします。
Sub 抽出データCL()
Worksheets("抽出データ").Cells.Clear
With Worksheets("抽出データ")
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
Worksheets("操作ボタン").Select
Range("A1").Select
End Sub
クリアボタンの設置
「出版社別シートCL」、「出版社リストCL」、「抽出データCL」の3つのプロシージャーを一度に行えるプロシージャーを作成します。
プロシージャー名を「返品情報データCL」とします。
部品化プロシージャーでCallステートメントは必須Sub 返品情報データCL()
Call Module4.出版社別シートCL
Call Module4.出版社リストCL
Call Module4.抽出データCL
End Sub
ボタン 「返品情報データクリア」を「操作ボタン」シートに設置します。
設置方法の確認はこちら↓での確認できます。
コマンドボタンをユーザーフォームに設置するデータ修正のための転送済データクリアとボタン設置
「操作ボタン」シートの「データ転送連携実行」ボタンを押した後で、書誌データの情報を修正したい時、
すでに転送したデータを一旦クリアすることが必要です。
「返品了解申請.xlsm」を開いて、「返品本分類」シートを選んでクリアを実行します。
先回の記事で作成したプロシージャーを呼び出して利用します。
プロシージャー名を「データ転送先データCL」とします。
Sub データ転送先データCL()
Call Module3.返品申請OPEN
Workbooks("返品了解申請.xlsm").Activate
With Worksheets("返品本分類")
.Cells.Clear
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
ボタンの設置はこのような感じです。
今回組み立てたクリアコード
作成したVBAコードはこのようになります。
Option Explicit
Sub 出版社別シートCL()
Dim SRow, t As Long
Dim SN As String
Worksheets("出版社リスト").Activate
If Range("A1").Value <> "" Then
SRow = Cells(Rows.Count, 1).End(xlUp).Row
For t = SRow To 1 Step -1
SN = Range("A" & t).Value
On Error GoTo step2
Worksheets(SN).Select
Application.DisplayAlerts = False
Worksheets(SN).Delete
Worksheets("出版社リスト").Activate
step2:
Next t
Application.DisplayAlerts = True
End If
End Sub
Sub 出版社リストCL()
Worksheets("出版社リスト").Cells.Clear
With Worksheets("出版社リスト")
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
Sub 抽出データCL()
Worksheets("抽出データ").Cells.Clear
With Worksheets("抽出データ")
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
Worksheets("操作ボタン").Select
Range("A1").Select
End Sub
Sub 返品情報データCL()
Call Module4.出版社別シートCL
Call Module4.出版社リストCL
Call Module4.抽出データCL
End Sub
Sub データ転送先データCL()
Call Module3.返品申請OPEN
Workbooks("返品了解申請.xlsm").Activate
With Worksheets("返品本分類")
.Cells.Clear
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
データクリアのVBAコードまとめ
この記事では返品書誌データを作成し転送し使った後で、
次回のソフト利用のため、今のデータをクリアしておく処理コードを設計しました。
エクセルBOOK「返品書誌情報.xlsm」を終了するときは、「上書き保存」で終了してもらえればOKです。
そして、次回からは、エクセルBOOK「返品了解申請.xlsm」で作成したテンプレートを複製して、
転送したデータを載せて行くプログラムコードを作っていきます。
エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。