Связанные значения ComboBox-Textbox с функцией VLOOKUP сохраняют только определенный диапазон (не весь диапазон) - PullRequest
0 голосов
/ 22 января 2019

Я получил 1 ComboBox [Vendor_Number_CO_List] и 1 TextBox [Vendor_Name_Box_CO].У них обоих есть своя собственная ценность Cells в excel, "B2: C15452".Я хочу изменить только ComboBox, и TextBox автоматически следит за значением в указанных ячейках.Я использую функцию VLOOKUP, это успешно, но только показывает TrueValue под «C9887», если он выше C9887, он показывает FalseValue ... Есть ли ограничения в диапазоне Textbox / Cells Range?

Я абсолютно новичок в VBA, я только начал эту вещь вчера ... и мне это очень нравится.Я хочу приступить к такого рода действиям, поэтому, пожалуйста, помогите вам в решении этой проблемы.

Я также пытаюсь сократить диапазон до "B2: C9887", и он показывает только FalseValue.Единственное отличие «C2: C9887» и «C9887: 15452» - это значение в ячейках.«Число» и «Сочетание слова и числа».

Вот мой код,

Private Sub Vendor_Number_CO_List_Change()

    Dim c, d As Variant


    c = Vendor_Number_CO_List.Value
    d = Application.VLookup(c, _
        ThisWorkbook.Sheets("Vendor Database").Range("B2:C15452"), 2, False)

    Vendor_Name_Box_CO.Value = IIf(IsError(d), "Vendor Not Found.", d)

End Sub

Я хочу, чтобы значение в поле со списком указывало среди «B2: B15452», оно показывает значение «C2: C15452» в Excel.Пожалуйста, ваши парни советуют об этом ..

1 Ответ

0 голосов
/ 22 января 2019

Поздравляем! Кажется, что ваш код работает хорошо, за исключением ошибки, которую вы разработали. Это не сработает. Код ниже показывает, как правильно реализовать вашу идею.

    Private Sub Vendor_Number_CO_List_Change()

        Dim c As Variant, d As Variant
        Dim Rng As Range

        c = Vendor_Number_CO_List.Value
        Set Rng = Sheets("Vendor Database").Range("B2:C15452")

        On Error Resume Next
        d = Application.VLookup(c, Rng, 2, False)
        If Err.Number Then d = "Vendor Not Found"
'        If Len(d) = 0 Then d = "Vendor Not Found"

        Vendor_Name_Box_CO.Value = d
    End Sub

VLOOKUP не может найти частичные значения ячеек. Следовательно, невозможность найти «1234» в «ABC-1234» не указывает на ошибку кодирования. Вы можете попытаться реализовать следующую логику.

  1. Если критерий без префикса не найден, произойдет ошибка.
  2. Если возникает ошибка, добавьте префикс к c и выполните поиск снова.
  3. Только если это также не удается, перейдите к «Значение не найдено».

Вы могли бы быть более беспристрастными с вашим именованием переменных. c может быть недостаточно описательным, а Vendor_Number_CO_List, вероятно, слишком описательным. Ваш код будет более читабельным, если вы избежите подчеркивания и пробелов.

...