Заполните текстовые поля на основе значения Combobox - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь заполнить текстовое поле в зависимости от выбора, который я сделал в поле со списком. Он в основном ищет значение в выпадающем списке и возвращает назначенное значение из столбца (3-го), который я выбрал. Я сделал некоторый код, но он возвращает ошибку несоответствия типов

Private Sub UserForm_Initialize()
ComboBox1.List = Sheets(1).Range("C15:C39").Value
End Sub

Private Sub ComboBox1_Change()
TextBox1.Text = Application.VLookup(ComboBox1.Value, Worksheets("sheet1").Range("A15:K39"), 3, False)
End Sub

Может кто-нибудь сообщить мне, что не так, и если есть лучший способ сделать это?

Ответы [ 3 ]

0 голосов
/ 06 ноября 2019

Попробуйте, может быть, это:

TextBox1.Text = Application.WorksheetFunction.VLookup(ComboBox1.List(ComboBox1.ListIndex, 0), Range("C15:K39"), 1, False)
0 голосов
/ 07 ноября 2019

Спасибо, ребята, я закончил с этим

Private Sub ComboBox1_Change()
Dim myRange As Range, f As Range

    Set myRange = Worksheets("Sheet2").Range("A2:B26")

    Set f = myRange.Find(What:=ComboBox1.Value, LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False) '<--| try and find combobox selected value
    If f Is Nothing Then
        TextBox1.Value = ""
    Else '<--| ... otherwise...
        TextBox1.Value = f.Offset(, 1)
        TextBox2.Value = f.Offset(, 2)
        TextBox3.Value = f.Offset(, 3)
    End If
End Sub

У меня было 3 текстовых поля, которые я заполнил тремя разными столбцами, как только в Combobox был выбран вариант.

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

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

Private Sub OK_Click()
    Sheets("Sheet1").Range("C9") = TextBox4.value
    Sheets("Sheet1").Range("D9") = TextBox5.value
End Sub
0 голосов
/ 06 ноября 2019

Предполагая, что ваша комбинация не является множественным выбором, загрузите ее со всем диапазоном и просто покажите интересующие вас столбцы. Сделайте количество столбцов в ComboBox равным количеству столбцов в вашем диапазоне.

ComboBox1.List = Sheets(1).Range("A15:K39").Value
ComboBox1.ColumnCount=11
ComboBox.ColumnWidths="0,0,100,0,0,0,0,0,0,0,0"
TextBox1.Value=ComboBox1.List(ComboBox.ListIndex,2) 'the columns are zero-based
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...