Excel 2003 Combobox / Validation Data List Значения и метки - PullRequest
1 голос
/ 17 января 2011

Я не могу найти эту информацию: возможно ли показывать метки в этих двух типах списков, а не в реальных значениях? конечно, когда выбрана метка, значение ячейки или поля со списком (в качестве элемента управления формы) получает реальное значение.

Пример: * Данные Продукт А <------> 10 Продукт B <------> 11 Продукт C <------> 22 * ​​1003 *

Combobox показывает: продукт A, продукт B и продукт C Если я выберу A, я получу значение 10, B значение 11 и C значение 22 * ​​1005 *

Заранее спасибо

Милуд Б.

Ответы [ 2 ]

2 голосов
/ 17 января 2011

Типичный способ сделать это - иметь справочную таблицу.Есть функция с именем что-то вроде VLOOKUP (это частичное имя), которую вы можете использовать в формулах для получения значения.Я сделал что-то подобное на своей работе, и я создал таблицу поиска в отдельной электронной таблице, а затем вызвал функцию поиска в моей основной таблице.

Вы также можете использовать макросы, но это слишком сложноМое мнение по текущей проблеме.

1 голос
/ 17 января 2011

Проверка данных : в строке не может быть двух значений. Вы можете использовать таблицу поиска для преобразования одного значения в другое. Или вы можете объединить значения, такие как «ProductA_10» и использовать формулу, чтобы извлечь «10» там, где вам это нужно.

Form Combobox : здесь также есть ограниченные возможности, и на самом деле он не предлагает ничего, кроме того, что DV делает для того, что вы хотите.

Панель инструментов Combobox : Это может сделать все, что вы хотите. Для свойства ColumnCount нужно установить значение 2, для свойства BoundColumn - 2, а для свойства ColumnWidths - что-то вроде «1; 0», чтобы скрыть второй столбец. Если бы у меня был ProductA-C в A1: A3 и 10-12 в B1: B3, я бы использовал такой код в стандартном модуле для заполнения поля со списком

Sub LoadCombobox()

    Dim rCell As Range

    For Each rCell In Sheet1.Range("A1:A3").Cells
        Sheet1.ComboBox1.AddItem rCell.Value
        Sheet1.ComboBox1.List(Sheet1.ComboBox1.ListCount - 1, 1) = rCell.Offset(0, 1).Value
    Next rCell

End Sub

И код, подобный этому, в модуле листа, чтобы поместить значение в ячейку (F1 в этом примере)

Private Sub ComboBox1_Change()

    Me.Range("F1").Value = Me.ComboBox1.Value

End Sub

Всякий раз, когда в выпадающем списке выбрано новое значение, F1 обновляется. Мы можем использовать свойство Value в выпадающем списке, потому что мы устанавливаем свойство BoundColumn для столбца со значением, которое мы хотим.

...