沢尻どうした? どうもoReです。
今回は、メッセージボックスにデータを表示していきます。
沢尻の心配してる場合じゃないですなw
※追記・修正しました(*ノωノ)
ヒカル様・p様・チュッパチャプス様、ありがとうございます。
メッセージボックスにデータ表示
テキストボックスやコンボボックスなどのデータ(内容)を、
メッセージボックスに表示させることができます。
設定シートのメーカー名登録削除プログラム
前回作成した設定シートのメーカー名を削除するプログラムを実行させると、
このようなメッセージボックスが表示されます。
しょぼっ!!(笑)
せっかく確認するのであれば、登録を削除するメーカー名を表示
させてあげれば多少見栄えがよくなりますよね。
↓このように追加してみましょう
Set Knskcell = Sheet3.Columns(“A”).Find(what:=ComboBox1.Text, Lookat:=xlWhole)
If Not Knskcell Is Nothing Then
YN = MsgBox("メーカー : " & ComboBox1 & vbCrLf & vbCrLf & “このメーカー名の登録を削除しますか?”, vbYesNo + vbQuestion, “登録削除確認”)
If YN = vbYes Then
Knskcell.Delete
MsgBox ComboBox1 &“を削除しました。”
ComboBox1 = ""
Call UserForm_Initialize
End If
End If
だいぶマシになりましたかね?
設定シートにメーカー名を登録するプログラム
設定シートにメーカー名を登録するプログラムは、
メーカー名が登録されていない場合有無を言わせず、
設定シートへ登録するようになっているのでvbYesNoも追加しましょう。
↓こんな感じ
'設定シートにメーカー名登録処理
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim LastRow As Long
Dim Knskcell As Range
Dim YN As VbMsgBoxResult
If KeyCode = 13 Then
If ComboBox1 = “” Then
Exit Sub
Else
With Sheet3
Set Knskcell = .Columns(“A”).Find(what:=ComboBox1.Text, lookat:=xlWhole) '←追記 (*ノωノ)
If Knskcell Is Nothing Then
YN = MsgBox("メーカー : " & ComboBox1 & vbCrLf & vbCrLf & “このメーカー名を登録しますか?”, vbYesNo + vbQuestion, “登録確認”)
If YN = vbYes Then
LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(LastRow + 1, 1) = ComboBox1.Text
MsgBox ComboBox1 &“を登録しました。”
Call UserForm_Initialize
End If
End If
End With
End If
End If
End Sub
データベースへの部品登録プログラム
データベースに部品を登録するプログラムの方も変更しましょう。
↓こんな感じ
'データベース出力処理
Private Sub CommandButton3_Click()
Dim YN As VbMsgBoxResult '←修正 (*ノωノ)
If TextBox1 = “” Then
MsgBox “バーコードを読み込んでください。”
ElseIf ComboBox1 = “” Then
MsgBox “メーカー名を入力してください。”
ElseIf TextBox2 = “” Then
MsgBox “品名を入力してください。”
ElseIf TextBox3 = “” Then
MsgBox “型式を入力してください。”
ElseIf TextBox4 = “” Then
MsgBox “在庫数を入力してください。”
Else
YN = MsgBox("バーコード : " & TextBox1 & vbCrLf & "メーカー : " & ComboBox1 & vbCrLf & "品名 : " & TextBox2 & vbCrLf & "型式 : " & TextBox3 & vbCrLf & "在庫数 : " & TextBox4 & vbCrLf & vbCrLf & "この部品を登録しますか?", vbYesNo + vbQuestion, "部品登録確認")
If YN = vbYes Then '←追記 (*ノωノ)
With Worksheets(“データベース”).Cells(Rows.Count, 2).End(xlUp)
.Offset(1, 0) = .Offset(0, 0).Value + 1
.Offset(1, 1) = TextBox1
.Offset(1, 2) = ComboBox1 '←追記 (*ノωノ)
.Offset(1, 3) = TextBox2
.Offset(1, 4) = TextBox3
.Offset(1, 5) = TextBox4 * 1
MsgBox "部品管理№ : " & .Offset(1, 0) & " に登録しました。"
End With
Call CommandButton1_Click
End If '←追記 (*ノωノ)
End If
End Sub
プログラムコードの改行
データベースに部品を登録するプログラムの、
確認メッセージボックスコードめちゃくちゃ長いですよね。
横にスクロールしないと、全容がわかりません。
それでは、コードを改行していきましょう。
改行する場合、行継続文字『 _』
半角スペースとアンダーバーで改行できます。
↓こんな感じに変更しましょう。
YN = MsgBox("バーコード : " & TextBox1 & vbCrLf & _ '&の後に半角スペースとアンダーバー
"メーカー : " & ComboBox1 & vbCrLf & _
"品名 : " & TextBox2 & vbCrLf & _
"型式 : " & TextBox3 & vbCrLf & _
"在庫数 : " & TextBox4 & vbCrLf & vbCrLf & _
"この部品を登録しますか?", vbYesNo + vbQuestion, "部品登録確認")
長くなったコードは改行すると可読性が良くなると思います。
ただ、調子に乗って改行しすぎると怒られます。
(# ゚Д゚)『行継続文字( _)を使いすぎています。』
あと、改行できる所と出来ない所があるので試してみてね。
区切りがいい所だと改行できます。
まとめ
例 MsgBox TextBox1 & ComboBox1
コードの改行 行継続文字『 _』 半角スペースとアンダーバー
行継続文字( _) 使いすぎ注意
次回 引数値渡しを使ってプログラムをまとめる
コメント
本サイトをもとに勉強してます。わかりやすくて助かっています。
データベースへの部品登録プログラムの、データベース出力処理ですが
.Offset(1, 2) = ComboBox1 が抜けていませんか?
違ったら申し訳ないです。
p様
はじめまして。
コメントありがとうございます。
>.Offset(1, 2) = ComboBox1 が抜けていませんか?
確認しました。
違ってません、おっしゃる通りですw
大変助かります!!
いつも参考にさせて頂きありがとうございます。
部品登録確認画面で
いいえを選択しても登録しましたになり困ってます。
素人ですので助言お願い致します。
チュッパチャプス様
はじめまして。
コメントありがとうございます。
>いいえを選択しても登録しましたになり困ってます。
確認しました。
MsgBoxの『はい』『いいえ』での条件分岐が抜けておりました。
If YN = vbYes Then
登録処理
End If
大変助かります!
ありがとうございます。
無事解決致しました。
また質問等するかもしれませんが
その時はよろしくご教示お願い致します。
こちらこそ、ありがとうございます。
私も素人なので、難しい質問はご勘弁をw