Когда я пытаюсь редактировать детали существующего элемента, мой код не может заполнить соответствующую информацию для двух последних элементов в списке. Для выбора редактируемого элемента есть поле со списком, затем текстовое поле для идентификатора элемента, а также текстовое поле для дат, в которые был заказан товар, и когда он был отправлен, а затем еще два со списками для выбора статуса доставки и интернет-магазина он был куплен. Эти поля автоматически заполняются соответствующей информацией для выбранного элемента. Детали, соответствующие выбранному элементу, можно редактировать, за исключением самого имени элемента и идентификатора элемента. Он работает для каждого предмета ЗА ИСКЛЮЧЕНИЕМ последних 2 пунктов, и я понятия не имею, почему. Вот код для редактирования существующего элемента:Как заполнить ComboBox с существующим массивом
Option Explicit
Private Sub cboOrderedFrom2_Change()
cboOrderedFrom2.BackColor = vbWhite
lblOrderedFrom2.ForeColor = vbBlack
End Sub
Private Sub cboOrderStatus2_Change()
cboOrderedFrom2.BackColor = vbWhite
lblOrderStatus2.ForeColor = vbBlack
End Sub
Private Sub cboRemoveOrEditItemDetails_Change()
cboRemoveOrEditItemDetails.BackColor = vbWhite
lblItemDescription2.ForeColor = vbBlack
Dim ws As Worksheet, i As Integer, wsLR As Variant
Set ws = ThisWorkbook.Sheets("Sheet1")
wsLR = ws.Cells(Rows.Count, 1).End(xlUp).Rows
For i = 3 To wsLR
If ws.Cells(i, 2) = Me.cboRemoveOrEditItemDetails Then
Me.txtItemID.Value = ws.Cells(i, "A")
Me.txtPiecesIncluded2.Value = ws.Cells(i, "C")
Me.txtOrderDate2.Value = ws.Cells(i, "E")
Me.cboOrderStatus2.Value = ws.Cells(i, "G")
Me.txtQuantityOrdered2.Value = ws.Cells(i, "D")
Me.txtDateShipped2.Value = ws.Cells(i, "F")
Me.cboOrderedFrom2.Value = ws.Cells(i, "H")
Exit Sub
End If
Next i
End Sub
Private Sub cmdAddStore_Click()
frmAddStore.Show
End Sub
Private Sub cmdCancelEditOrRemoveItemDetails_Click()
Unload Me
End Sub
'Private Sub cmdRemoveItemDetails_Click()
'Dim ws As Worksheet, i As Integer, wsLR As Variant
'Set ws = ThisWorkbook.Sheets("Sheet1")
'wsLR = ws.Cells(Rows.Count, 1).End(xlUp).Rows
'For i = 3 To wsLR
'If ws.Cells(i, 2) = Me.cboRemoveOrEditItemDetails Then
'Rows(i).EntireRow.Delete
'Sheet1.Activate
'Range("A1").End(xlDown).Offset(1, 0).Select
'ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
'Unload Me
'End If
'Next i
'End Sub
Private Sub cmdSubmitEditItemDetails_Click()
If txtPiecesIncluded2.BackColor = vbRed Then
Exit Sub
End If
If txtQuantityOrdered2.BackColor = vbRed Then
Exit Sub
End If
If cboOrderStatus2.BackColor = vbRed Then
Exit Sub
End If
If cboOrderedFrom2.BackColor = vbRed Then
Exit Sub
End If
If cboRemoveOrEditItemDetails.Value = "" Then
cboRemoveOrEditItemDetails.BackColor = vbRed
lblItemDescription2.ForeColor = vbRed
Exit Sub
End If
If cboRemoveOrEditItemDetails.BackColor = vbRed Then
Exit Sub
End If
Dim ws As Worksheet, i As Integer, wsLR As Variant
Set ws = ThisWorkbook.Sheets("Sheet1")
wsLR = ws.Cells(Rows.Count, 1).End(xlUp).Rows
For i = 3 To wsLR
If ws.Cells(i, "B") = Me.cboRemoveOrEditItemDetails Then
ws.Cells(i, "A") = Me.txtItemID.Value
ws.Cells(i, "C") = Me.txtPiecesIncluded2.Value
ws.Cells(i, "E") = Me.txtOrderDate2.Value
ws.Cells(i, "G") = Me.cboOrderStatus2.Value
ws.Cells(i, "D") = Me.txtQuantityOrdered2.Value
ws.Cells(i, "F") = Me.txtDateShipped2.Value
ws.Cells(i, "H") = Me.cboOrderedFrom2.Value
Unload Me
Exit Sub
End If
Next i
End Sub
Private Sub spnPiecesIncluded2_Change()
txtPiecesIncluded2.Value = spnPiecesIncluded2.Value
End Sub
Private Sub spnQuantityOrdered2_Change()
txtQuantityOrdered2.Value = spnQuantityOrdered2.Value
End Sub
Private Sub txtPiecesIncluded2_Change()
If IsNumeric(txtPiecesIncluded2.Value) And txtPiecesIncluded2.Value >= spnPiecesIncluded2.Min And _
txtPiecesIncluded2.Value <= spnPiecesIncluded2.Max Then
spnPiecesIncluded2.Value = txtPiecesIncluded2.Value
txtPiecesIncluded2.BackColor = vbWhite
lblPiecesIncluded2.ForeColor = vbBlack
Else
txtPiecesIncluded2.BackColor = vbRed
lblPiecesIncluded2.ForeColor = vbRed
End If
End Sub
Private Sub txtQuantityOrdered2_Change()
If IsNumeric(txtQuantityOrdered2.Value) And txtQuantityOrdered2.Value >= spnQuantityOrdered2.Min And _
txtQuantityOrdered2.Value <= spnQuantityOrdered2.Max Then
spnQuantityOrdered2.Value = txtQuantityOrdered2.Value
txtQuantityOrdered2.BackColor = vbWhite
lblQuantityOrdered2.ForeColor = vbBlack
Else
txtQuantityOrdered2.BackColor = vbRed
lblQuantityOrdered2.ForeColor = vbRed
End If
End Sub
Private Sub UserForm_Click()
End Sub
Отредактируйте сообщение, чтобы включить код для модуля, в котором вы также создаете массив. Кто-то может захотеть увидеть, как он формирует ваш массив. – cheshire