メッセージボックス条件分岐でメーカー名の登録を削除する 【VBA在庫管理#18】

Excel VBA 部品在庫管理アイキャッチ画像部品在庫管理

人肌恋しい、どうもoReです。

今回は、メッセージボックスで確認をとり処理を分岐させていきます。

MsgBox

通常メッセージボックスを表示させると、
『メッセージ』『OK』ボタンが表示されますよね。

MsgBox "oReです。(*ノωノ)"

 

メッセージボックス通常

 

メッセージを改行する

vbCrLfを改行したいところに入れると改行されます。

MsgBox "oReです。" & vbCrLf & "(*ノωノ)"

 

メッセージボックス改行

 

メッセージボックスのボタンを『はい』『いいえ』にする

vbYesNoをメッセージに付けてあげます。(『はい』『いいえ』ボタン表示)

MsgBox "ガチでoReですか?", vbYesNo

 

メッセージボックスはいいいえボタン

 

その他のボタン

vbOKOnly『OK』ボタンのみ表示
vbOKCancel『OK』と『キャンセル』をボタン表示
vbAbortRetryIgnore『中止』と『再試行』と『無視』を表示
vbYesNoCancel『はい』と『いいえ』と『キャンセル』を表示
vbRetryCancel『再試行』と『キャンセル』を表示

 

メッセージボックスにアイコンを表示させる

vbQuestionを追加してあげます。(問い合わせアイコン)

MsgBox "ガチでoReですか?", vbYesNo + vbQuestion

 

メッセージボックス問い合わせアイコン

 

その他のアイコン

vbCritical警告アイコン
vbExclamation注意アイコン
vbInformation情報アイコン

 

メッセージボックスのタイトルを変更する

最後にメッセージボックスのタイトルを付けてあげます。

MsgBox "ガチでoReですか?", vbYesNo + vbQuestion, "確認"

 

メッセージボックスタイトル

 

タイトルだけ変更する場合

MsgBox "ガチでoReですか?" , "確認"

 

メッセージボックスタイトルのみ

それでは、実際に使ってプログラムを書いていきましょう。

 

設定シートのメーカー名登録削除プログラム

部品登録フォームのコンボボックス1をダブルクリックした場合、
設定シートのメーカー名を削除するようにしていきます。

 

まずは、コンボボックス1ダブルクリックプロシージャを追加します。

コマンドボタンダブルクリックプロシージャ

 

それでは、メッセージボックスを表示させましょう。

  ↓こんな感じ

'設定シートのメーカー名削除処理
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  MsgBox "登録を削除しますか?"
End Sub

 

コマンドボタン1をダブルクリックして、メッセージが表示されましたか?

無事表示されたら、メッセージボックスをカスタマイズします。

  ↓こんな感じ

'設定シートのメーカー名削除処理
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  MsgBox "登録を削除しますか?", vbYesNo + vbQuestion, "確認"
End Sub

 

このままでは、メッセージボックスの『はい』『いいえ』ボタンを押しても
何も起こりません。

どちらのボタンが押されたのかをデータとして取得して、
変数へ入れましょう。

  ↓こんな感じ

'設定シートのメーカー名削除処理
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Dim YN As VbMsgBoxResult

  YN = MsgBox ("登録を削除しますか?", vbYesNo + vbQuestion, "確認")
End Sub

 

・Result リィザァルトゥ

Resultは、『結果』という意味みたいです。

 

Dim YN As VbMsgBoxResult

変数YNには、メッセージボックスの結果を格納するよって事です。

メッセージの部分を( )で囲ってあげると、メッセージボックスの結果を取得できます。

結果が取得できれば、こっちの物です。
お馴染みのIf文を使っていきます。

  ↓こんな感じ

'設定シートのメーカー名削除処理
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Dim YN As VbMsgBoxResult

  YN = MsgBox ("登録を削除しますか?", vbYesNo + vbQuestion, "確認")
  If YN = vbYes Then '『はい』ボタンが押された場合
    MsgBox "はい"
  Else '『はい』ボタンじゃない場合
    MsgBox "いいえ"
  End If
End Sub

 

動作確認してみてください。
ちゃんと『はい』『いいえ』のメッセージがでますか?

あとは、条件を追加して設定シートのメーカー名を、
削除するプログラムを作るだけです。

  ↓こんな感じ

'設定シートのメーカー名削除処理
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Dim YN As VbMsgBoxResult
  Dim Knskcell As Range

  If ComboBox1 = "" Then '空白でダブルクリックした場合
    Exit Sub '処理を抜ける
  Else
    Set Knskcell = Sheet3.Columns("A").Find(what:=ComboBox1.Text, Lookat:=xlWhole) 'A列から検索
    If Not Knskcell Is Nothing Then '検索結果全部一致のセルがあった場合
      YN = MsgBox ("登録を削除しますか?", vbYesNo + vbQuestion, "確認")
      If YN = vbYes Then '『はい』ボタンが押された場合
        Knskcell.Delete 'セルを削除
        MsgBox "削除しました。"
        ComboBox1 = ""
        Call UserForm_Initialize
      End If
    End If
  End If
End Sub

 

If Knskcell Is Nothing Thenは、検索結果がなかった場合でしたよね?

If Not Knskcell Is Nothing Thenは、検索結果がなかった場合じゃなかった場合(笑)、
つまり検索結果があった場合となります。

設定シートへ登録したメーカー名を削除できましたか?

oReのぞき見

まとめ

メッセージ改行 & vbCrLf &
メッセージボタン『はい』『いいえ』 vbYesNo
メッセージボックス問い合わせアイコン vbQuestion
メッセージボックスタイトル ,  , “確認”
メッセージボックス変数の型 VbMsgBoxResult
メッセージボックスの結果を取得 ( )で囲ってあげる
If Not Knskcell Is Nothing Then 検索結果があった場合

oReYesNo

次回 メッセージボックスにデータを表示してみる

ExcelVBA部品在庫管理【目次】へ戻る

コメント

タイトルとURLをコピーしました