如何 link 组合框中的每个项目到特定行?

How to link each items in a combobox to a specific row?

我正在创建一个在表单上输入数据的用户表单。在该用户表单中,我有一个列出所有产品的组合框。对于每个产品,都有一行,输入的数据只会在该行上。

Private sub cwbSave_Click()

Dim ws as Worksheet
Set ws = ActiveWorkbook.ActiveSheet

with ws
   Select Case cbProduct
      Case Is = "Apple"
          With ActiveSheet.Range("A14:P14")
                .Font.Bold = True
          End With
      ws.Cell(14,4) = Me.tbPrice
      ws.Cell(14,5) = Me.tbColor
      ws.Cell(14,6) = Me.tbSell
      Case Is = "Pineapple"
          With ActiveSheet.Range("A15:P15")
                .Font.Bold = True
          End With
      ws.Cell(15,4) = Me.tbPrice
      ws.Cell(15,5) = Me.tbColor
      ws.Cell(15,6) = Me.tbSell
   End Select
End With
End Sub

但问题是,我得到了大约 30 种产品。而且需要大量手动输入。我想知道是否有更简单的编码方法。

谢谢

有几种方法可以做到这一点..这是一种:

UserForm_Initialize中添加以下代码:

Private Sub UserForm_Initialize()
    Dim aValues As Variant: aValues = WorksheetFunction.Transpose(ThisWorkbook.Worksheets("Sheet2").Range("A2:A5"))     ' Change sheet name and range to where your products are
    Dim iRow As Long

    ' Clear combobox
    Me.cmbCmbBox.Clear

    ' Fill combobox with the values from product range
    For iRow = LBound(aValues) To UBound(aValues)
        Me.cmbCmbBox.AddItem aValues(iRow)
    Next
End Sub

以上代码使用您的产品范围来填充组合框。现在在 cmbCmbBox_Change 中,添加以下代码:

Private Sub cmbCmbBox_Change()
    Dim oWS As Worksheet: Set oWS = ThisWorkbook.Worksheets("Sheet2")
    Dim rProdRange As Range: Set rProdRange = oWS.Range("A2:A5")
    Dim rItemRange As Range

    ' Find the selected item
    Set rItemRange = rProdRange.Find(Me.cmbCmbBox.Value)

    ' Set value in the sheet
    If Not rItemRange Is Nothing Then
        oWS.Cells(rItemRange.Row, 4) = Me.tbPrice
        oWS.Cells(rItemRange.Row, 5) = Me.tbColor
        oWS.Cells(rItemRange.Row, 6) = Me.tbSell
    End If

End Sub

您可以在找不到产品时添加验证