Отображает выделение внутри текстового поля только для чтения - PullRequest
0 голосов
/ 26 июня 2018
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 голосов
/ 26 июня 2018

Отображение только значения только из столбца C в текстовом поле, доступном только для чтения, может быть легко достигнуто следующим образом:

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

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

End Sub

Затем в событии ввода выполните что-то вроде этого:

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

Это, однако, предполагает, что в значениях столбца C не используются круглые скобки.

0 голосов
/ 26 июня 2018

Вы можете получить свой текст в столбце C из списка comboBox.list:

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

Или вы можете использовать listIndex и получить значение из самого листа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...