■概要
商品マスタデータに対して、InputBox関数を使用し、入力した商品No.と一致するデータを削除する。
対象データを削除した場合、商品No.は採番し直す。
・削除前(No.3のデータを削除)
・削除後
■フローチャート
「商品マスタデータ削除」処理のフローチャートを以下図に示す。
■プログラム仕様
「商品マスタデータ削除」処理のプログラム仕様を以下表に示す。
入力 | 処理内容 | 出力 |
---|---|---|
– | 「商品マスタデータ削除」処理の変数を宣言する。 ・シートオブジェクト(Worksheet型) ・シート名(文字列型) ・商品No.(Integer型) ・インプットボックスのタイトル(文字列型) ・インプットボックスの本文(文字列型) ・行カウンタ(Integer型) ・No.カウンタ(Integer型) ・削除完了フラグ(Boolean型) | – |
– | 文字列関係の変数に初期値を設定する。 ・シート名 ・インプットボックスのタイトル ・インプットボックスの本文 | – |
– | データの開始行(3行目)をセットする。 ・初期値:3 | – |
– | No.の初期値をセットする。 ・初期値:1 | – |
– | 削除完了フラグセットする。(OFF) ・初期値:False | – |
– | 「商品マスタ」シートをセットする。 | – |
【InputBox】 商品No. | ●「商品マスタ」シートにフォーカス |INPUTBOXを表示する。 |▼条件分岐:入力値 |【未入力/キャンセル/数値以外の場合】 ||未記入を出力・・・① |------ |【その他】 ||■ループ:No.列の値が空になるまで |||▼条件分岐:No.の値 |||【入力値と同じ場合】 ||||対象行を削除する。 ||||削除完了フラグを「True」にする。 |||▲ |||No.の値を振りなおす。・・・② |||商品No.とデータの開始行をインクリメント ||■ |▲ |▼条件分岐:削除フラグ完了フラグ |【Trueの場合】 ||削除完了出力・・・③ |------ |【その他】 ||対象データなし出力・・・④ |▲ ● | 【メッセージボックス】 ①未記入 ③削除完了 ④対象データなし 【Excel】 ②商品No. |
– | シートオブジェクトを解放する。 | – |
■サンプルコード
Option Explicit
' 商品マスタデータ削除処理
Public Sub DelSyohinMstData()
' 変数宣言
Dim sht_syohinmst As Worksheet ' シートオブジェクト
Dim sht_name As String ' シート名
Dim syohinNo As Integer ' 商品No.
Dim input_title As String ' インプットボックスのタイトル
Dim input_msg As String ' インプットボックスの本文
Dim i_row As Integer ' 行カウンタ
Dim i_No As Integer ' No.カウンタ
Dim is_delete_flg As Boolean ' 削除完了フラグ
' エラー時の処理をセット
On Error GoTo DelSyohinMstData_err
' 文字列関係の変数に初期値を設定
sht_name = "商品マスタ"
input_title = "商品マスタデータ削除"
input_msg = "削除対象のNo.を入力してください"
' データの開始行(3行目)
i_row = 3
' No.の初期値セット
i_No = 1
' 削除完了フラグセット(OFF)
is_delete_flg = False
' 「商品マスタ」シートをセット
Set sht_syohinmst = ThisWorkbook.Worksheets(sht_name)
' 「商品マスタ」シートにフォーカス
With sht_syohinmst
' INPUTBOX:削除対象No.を入力
syohinNo = Val(InputBox(Prompt:=input_msg, Title:=input_title))
' 未入力/キャンセル/数値以外の場合
If syohinNo = 0 Then
MsgBox "値を入力してください"
' 終了処理へ移動
GoTo DelSyohinMstData_exit
' 何かしら数値入力した場合
Else
' No.列の値が空になるまでループ
Do Until .Cells(i_row, 2).Value = ""
' 入力値とNo.の値が同じ場合
If .Cells(i_row, 2).Value = syohinNo Then
' 対象行を削除
.Rows(i_row).Delete
' 削除完了フラグON
is_delete_flg = True
End If
' No.の値を振りなおす
.Cells(i_row, 2).Value = i_No
' インクリメント
i_No = i_No + 1
i_row = i_row + 1
Loop
End If
' 削除フラグ完了フラグがONの場合
If is_delete_flg Then
MsgBox "削除完了"
' 削除完了フラグがOFFの場合
Else
MsgBox "対象データが見つかりませんでした"
End If
End With
' 終了処理へ移動
GoTo DelSyohinMstData_exit
' エラー時の処理
DelSyohinMstData_err:
' エラー内容を出力
MsgBox Err.Description
' 終了処理へ移動
GoTo DelSyohinMstData_exit
' 終了処理
DelSyohinMstData_exit:
' シートオブジェクトを解放
Set sht_syohinmst = Nothing
End Sub
■実行結果
「商品マスタデータ削除」処理について、対象の商品マスタが削除される正常系と、未入力・入力ミスを起因とする異常系の実行結果を示す。
▼事前準備
「商品マスタ削除」ボタンにマクロを登録する。
▼正常系
・「商品マスタ削除」ボタンを押下し、InputBoxに「3」を入力し、「OK」ボタンを押下する。
・商品コード「A-003」のデータが削除され、No.の値が採番され直す。
▼異常系
・未入力で実行
・「商品マスタ削除」ボタンを押下し、InputBoxに何も入力せず、「OK」ボタンを押下する。
・「値を入力してください」と出力する。
・存在しない番号を入力
・「商品マスタ削除」ボタンを押下し、InputBoxに「16」を入力し、「OK」ボタンを押下する。
・「対象データが見つかりませんでした」と出力する。
コメント