人肌恋しい、どうも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は、検索結果がなかった場合じゃなかった場合(笑)、
つまり検索結果があった場合となります。
設定シートへ登録したメーカー名を削除できましたか?
まとめ
次回 メッセージボックスにデータを表示してみる
コメント