前提・実現したいこと
在庫管理フォームの作成(1つのフォームでデータの登録、検索、削除)を行えるようにしたいです。
Sheet1にはA列=材質 B列=板厚 C列=縦寸法 D列=横寸法 のデータが入っています。
発生している問題・エラーメッセージ
削除ボタンを押したときにシート上ではリストボックスで選択したデータと違うデータが削除されてしまいます。
エラーメッセージはありません。
該当のソースコード
Private Sub Workbook_Open() UserForm2.Show End Sub Private Sub clrB_Click() ComboBox1.Value = "" TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" End Sub Private Sub delB_Click() Worksheets("Sheet1").Select Dim index As Integer index = UserForm2.ListBox1.ListIndex If index = -1 Then MsgBox "データが選択されていません " Else msg = MsgBox(" " & ComboBox1.Value & " " & TextBox1.Value & "t " & TextBox2.Value & "×" & TextBox3.Value & vbCrLf & vbCrLf & " このデータを消去しますがよろしいですか?", Buttons:=vbYesNo) If msg = vbYes Then Rows(ListBox1.ListIndex + 2).Delete UserForm2.ListBox1.RemoveItem index 'リストボックスに表示されたデータを消去する ComboBox1.Value = "" TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" MsgBox "消去しました" Else MsgBox "中止しました" End If End If End Sub Private Sub ListBox1_Click() If TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 2) And TextBox3.Value = ListBox1.List(ListBox1.ListIndex, 3) Then delB.Enabled = True Else delB.Enabled = False End If End Sub Private Sub owari_Click() Unload UserForm2 Sheets(1).Select End Sub Private Sub touroku_Click() If ComboBox1.Value = "" Then MsgBox "材質を選択してください。" ComboBox1.SetFocus Exit Sub End If If TextBox1.Value = "" Then MsgBox "板厚を入力してください。" TextBox1.SetFocus Exit Sub End If If TextBox1.Value > 12 Then MsgBox "板厚の数値を見直してください。" Exit Sub End If If TextBox2.Value = "" Then MsgBox "端材寸法を入力してください。" TextBox2.SetFocus Exit Sub End If If TextBox3.Value = "" Then MsgBox "端材寸法を入力してください。" TextBox3.SetFocus Exit Sub End If msg = MsgBox(" " & ComboBox1.Value & " " & TextBox1.Value & "t " & TextBox2.Value & "×" & TextBox3.Value & vbCrLf & vbCrLf & " 端材を登録しますか?", Buttons:=vbYesNo) If msg = vbYes Then Me.Hide Sheet1.Select Range("A1").End(xlDown).Offset(1, 0).Select ActiveCell.Value = ComboBox1.Value ActiveCell.Offset(0, 1).Value = TextBox1.Value ActiveCell.Offset(0, 2).Value = TextBox2.Value ActiveCell.Offset(0, 3).Value = TextBox3.Value ComboBox1.Value = "" TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" ListBox1.Clear MsgBox "登録しました" Me.Show Else MsgBox "元の画面に戻ります" End If End Sub Private Sub UserForm_Initialize() With ComboBox1 .AddItem "SPHC" .AddItem "SPCC" .AddItem "ボンデ" .AddItem "SUS" .AddItem "SUS430" End With delB.Enabled = False End Sub Private Sub kensaku_Click() Dim maxRow As Long Dim myData As Variant Dim myData2() As Variant Dim i As Long, j As Long, cn As Long With Worksheets("Sheet1") maxRow = .Cells(Rows.Count, 1).End(xlUp).Row 'Worksheet(1)の最終行の取得 myData = .Range(.Cells(1, 1), .Cells(maxRow, 4)).Value 'データ格納 End With ReDim myData2(1 To maxRow, 1 To 4) For i = LBound(myData) To UBound(myData) If myData(i, 1) Like "*" & ComboBox1.Value & "*" And myData(i, 2) Like "*" & TextBox1.Value & "*" Then cn = cn + 1 myData2(cn, 1) = myData(i, 1) myData2(cn, 2) = myData(i, 2) myData2(cn, 3) = myData(i, 3) myData2(cn, 4) = myData(i, 4) End If Next i With ListBox1 .ColumnCount = 4 .ColumnWidths = "75;75;65;65" .List = myData2 End With End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ComboBox1.Text = ListBox1.List(ListBox1.ListIndex, 0) TextBox1.Text = ListBox1.List(ListBox1.ListIndex, 1) TextBox2.Text = ListBox1.List(ListBox1.ListIndex, 2) TextBox3.Text = ListBox1.List(ListBox1.ListIndex, 3) delB.Enabled = True End Sub Private Sub Usetform_Initialize() Dim maxRow As Long Dim myDate, myDate2() Dim i As Long, j As Long With Worksheets("Sheet1") maxRow = .Cells(Rows.Count, 1).End(xlUp).Row myDate = .Range(.Cells(1, 1), .Cells(maxRow, 4)).Value End With ReDim myDate2(1 To maxRow, 1 To 3) For i = LBound(myDate) To UBound(myDate) myDate2(i, 1) = myDate(i, 1) myDate2(i, 2) = myDate(i, 2) myDate2(i, 3) = myData(i, 3) myData2(i, 4) = myDate(i, 4) Next i With ListBox1 .ColumnCount = 4 .ColumnWidths = "75;75;65;65" .List = myData2 End With End Sub
試したこと
コードは色んなサイト様から引用して作りました。
お恥ずかしいですがコードの組み立て方など基本がほとんど理解できておりません。
エラーが出ないので何が違うのかわからず行き詰っております。
どうか、よろしくおねがいいたします。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー