显示和编辑表格中的最后一个项目

我build立了一个表,跟踪我在线订购的物品。 它存储物品的名称和相应的信息(订购的数量,包含的物品,订购的date,装运date,装运状态,购买源),并为每个物品分配一个ID。

在表格旁边有一个button,可以点击并select是否将新项目添加到列表或编辑现有项目信息(发货状态等)。 我可以添加一个新的项目到列表中,我可以编辑除了表中最后一项以外的所有信息。

当我select要编辑的项目时,用户窗体显示相应的信息。 这适用于我的表中的每个项目,除了最后一个项目,项目#55显示相同的信息作为最后select的项目,或者根本没有什么,如果首先select。

我已经尝试手动清除每个单元格,然后使用窗体来重新添加项目,它们被正确添加,但是当我尝试编辑时信息仍然不显示。

在下面的代码中删除button的子程序被注释掉了,如果有人对我在这里需要做的事情有什么build议来获得这个工作的话,那也会很感激,但是如果我将来会为此提出一个新的问题需要。

真正的问题是让最后两个项目在select时显示正确的信息。

以下是编辑现有项目的代码:

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 cboItem_Change() cboItem.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.cboItem 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.cboItem 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 cboItem.Value = "" Then cboItem.BackColor = vbRed lblItemDescription2.ForeColor = vbRed Exit Sub End If If cboItem.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.cboItem 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