メッセージボックスにデータ表示とコードの改行 【VBA在庫管理#19】

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

沢尻どうした? どうもoReです。

今回は、メッセージボックスにデータを表示していきます。

沢尻の心配してる場合じゃないですなw
※追記・修正しました(*ノωノ)
ヒカル様・p様・チュッパチャプス様、ありがとうございます。

メッセージボックスにデータ表示

テキストボックスやコンボボックスなどのデータ(内容)を、
メッセージボックスに表示させることができます。

 

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

前回作成した設定シートのメーカー名を削除するプログラムを実行させると、
このようなメッセージボックスが表示されます。

メッセージボックス01

 

しょぼっ!!(笑)

oReびっくり

せっかく確認するのであれば、登録を削除するメーカー名を表示
させてあげれば多少見栄えがよくなりますよね。

 

  ↓このように追加してみましょう

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
コードの改行 行継続文字『 _』 半角スペースとアンダーバー
行継続文字( _) 使いすぎ注意

お薬ダメ絶対

次回 引数値渡しを使ってプログラムをまとめる

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

コメント

  1. p より:

    本サイトをもとに勉強してます。わかりやすくて助かっています。

    データベースへの部品登録プログラムの、データベース出力処理ですが
    .Offset(1, 2) = ComboBox1 が抜けていませんか?

    違ったら申し訳ないです。

    • oReoRe より:

      p様
      はじめまして。
      コメントありがとうございます。

      >.Offset(1, 2) = ComboBox1 が抜けていませんか?

      確認しました。
      違ってません、おっしゃる通りですw
      大変助かります!!

  2. チュッパチャプス より:

    いつも参考にさせて頂きありがとうございます。
    部品登録確認画面で
    いいえを選択しても登録しましたになり困ってます。
    素人ですので助言お願い致します。

    • oReoRe より:

      チュッパチャプス様
      はじめまして。
      コメントありがとうございます。

      >いいえを選択しても登録しましたになり困ってます。

      確認しました。

      MsgBoxの『はい』『いいえ』での条件分岐が抜けておりました。

      If YN = vbYes Then

        登録処理

      End If

      大変助かります!

  3. チュッパチャプス より:

    ありがとうございます。

    無事解決致しました。

    また質問等するかもしれませんが
    その時はよろしくご教示お願い致します。

    • oReoRe より:

      こちらこそ、ありがとうございます。

      私も素人なので、難しい質問はご勘弁をw

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