在只读文本框中显示选择

时间:2018-06-26 13:06:53

标签: excel-vba vba excel

Private Sub cmbPrdCde_Enter()
Dim ary As Variant, nary As Variant, r As Long
If cmbSDPFLine.Value = "Slat" Then
    cmbPrdCde.Clear
    cmbPrdCde.Value = ""
    With ThisWorkbook.Worksheets(cmbSDPFLine.Value)
        ary = .Range("B3", .Range("B" & Rows.Count).End(xlUp).Offset(, 1))
        ReDim nary(1 To UBound(ary))
            For r = 1 To UBound(ary)
                nary(r) = ary(r, 1) & " (" & ary(r, 2) & ")"
            Next r
    Me.cmbPrdCde.List = nary
    End With
End If
End Sub

上面的代码将B列和C列的值放置在一起,并将它们连接到用户窗体上的一个组合框中。 B列包含该商品的产品代码,C列包含该商品的名称。根据选择的内容,如何在只读文本框中显示列C的值。

2 个答案:

答案 0 :(得分:0)

您可以从comboBox.list取回C列文本:

Private Sub cmbPrdCde_Change()
x = Split(Me.cmbPrdCde.Value, " (")
Yourtextbox.Value = Left(x(1), Len(x(1)) - 1)
End Sub

或者您可以使用listIndex并从Sheet本身获取值

答案 1 :(得分:0)

可以很容易地实现仅显示只读文本框中仅C列中的值:

' set textbox to read-only
Private Sub UserForm_Initialize()

     ' change textbox name if required
    Me.TextBox1.Enabled = False

End Sub

然后在enter事件中,执行以下操作:

Me.TextBox1.value = Replace(Split(Me.cmbPrdCde.Value, " (")(1), ")", vbNullstring)

但这确实假定在C列的值中没有使用括号。