У меня есть пользовательская форма с двумя выпадающими списками. Один из них содержит номера деталей, другой содержит описания деталей, например:
Номер детали:
01982391823
Описание:
5/8 "клапан Festo
У них обоих есть предметы с другого листа (базы данных).
Что я хочу сделать, так это если я помещу код в поле со списком кодов, другой покажет мне соответствующее описание, и наоборот (потому что их около 400). Это возможно?
EDIT:
С помощью "Love Coding" и с адаптациями я вставил ваш код:
'from here starts the macro test, to see if it can search the code by text and vice versa
Private Sub ComboBox2_Change()
Dim WS As Worksheet
Dim LastRow As Long
Dim aCell As Range
Set WS = Planilha3
If ComboBox2.Value <> "" Then
'LOOP THRU ALL THE DATABASE AND LOOK FOR THE DESC ROW NUMBER AND GET THE PART
For a = 2 To WS.Range("C" & Rows.Count).End(xlUp).Row
If CStr(WS.Range("C" & a).Value) = ComboBox2.Value Then
ComboBox3.Value = WS.Range("B" & a).Value
Exit For
End If
Next a
End If
End Sub
Private Sub ComboBox3_Change()
Dim WS As Worksheet
Dim LastRow As Long
Dim aCell As Range
Set WS = Planilha3
If ComboBox3.Value <> "" Then
'LOOP THRU ALL THE DATABASE AND LOOK FOR THE PART ROW NUMBER AND GET THE DESC
For a = 2 To WS.Range("B" & Rows.Count).End(xlUp).Row
If CStr(WS.Range("B" & a).Value) = ComboBox3.Value Then
ComboBox2.Value = WS.Range("C" & a).Value
Exit For
End If
Next a
End If
'daqui fecha a primeira parte do código que procura de acordo com a descrição, ele continua no "initialize"
'from here ends the macro test, to see if it can search the text by code and vice versa
End Sub
Private Sub CommandButton1_Click()
'trecho para ir para selecionar a ultima linha em branco da tabela
Dim linha As Integer
linha = Planilha1.Range("A1048576").End(xlUp).Row + 1
'colando as informações do formulário no banco
'data
Planilha1.Range("A" & linha) = TextBox1.Text
'código
Planilha1.Range("B" & linha) = ComboBox2.Text
'item (descrição)
Planilha1.Range("C" & linha) = ComboBox3.Text
'quantidade
Planilha1.Range("D" & linha) = TextBox4.Text * (-1)
'usuário
Planilha1.Range("U" & linha) = ComboBox1.Text
End Sub
Private Sub CommandButton2_Click()
End Sub
Private Sub CommandButton3_Click()
'botão cancelar (nunca colocar ponto entre unload e me)
Unload Me
End Sub
Private Sub Label3_Click()
End Sub
Private Sub TextBox1_Change()
'permitindo apenas 10 caracteres (2 da data, 2 do mes, 4 do ano, 2 barras)
TextBox1.MaxLength = 10
'condição pra depois do dia e do mês ele escrever a barra automático
If Len(TextBox1) = 2 Or Len(TextBox1) = 5 Then
TextBox1.Text = TextBox1.Text & "/"
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'proibir colocação de caractere fora numeros
If KeyAscii < Asc(0) Or KeyAscii > Asc(9) Then
KeyAscii = 0
End If
End Sub
Private Sub TextBox4_Change()
End Sub
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'proibir colocação de caractere fora números
If KeyAscii < Asc(0) Or KeyAscii > Asc(9) Then
KeyAscii = 0
End If
End Sub
Private Sub UserForm_Initialize()
'campo usuário
'colocando itens a serem exibidos no combobox "usuário"
'private sub Userform_initialize ()
'ComboBox.AddItem "item a ser adicionado"
ComboBox1.AddItem "DEMETRIUS RABELO"
ComboBox1.AddItem "ERIC SANTOS"
ComboBox1.AddItem "GERALDO GUIMARÃES"
ComboBox1.AddItem "REGINALDO SILVA"
'campo código
'puxando os códigos existentes na planilha
'ComboBox2.List = Planilha3.Range("B:B").Value
'campo código
'apenas mostrando valores não vazios no campo código
Dim WS As Worksheet
Dim LastRow As Long
Dim aCell As Range
Set WS = Planilha3
'deixando a planilha vazia
WS.Visible = False
With WS
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For Each aCell In .Range("B2:B" & LastRow)
If aCell.Value <> "" Then
Me.ComboBox2.AddItem aCell.Value
End If
Next
End With
'campo item
With WS
LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
For Each aCell In .Range("C2:C" & LastRow)
If aCell.Value <> "" Then
Me.ComboBox3.AddItem aCell.Value
End If
Next
End With
' continuation:
'ADD ITEMS TO COMBOBOX PART
With ComboBox2
'Loop thru all the parts and add to the combobox part
For a = 2 To WS.Range("B" & Rows.Count).End(xlUp).Row
ComboBox2.AddItem WS.Range("B" & a).Value
Next a
End With
'ADD ITEMS TO COMBOBOX DESCRIPTION
With ComboBox3
'Loop thru all the description and add to the combobox description
For b = 2 To WS.Range("C" & Rows.Count).End(xlUp).Row
ComboBox3.AddItem WS.Range("C" & b).Value
Next b
End With
End Sub
Я уже добавил часть Dim в начале, чтобы избежать "ошибки 424" в макросе, однако я пока не могу делать то, что хочу
Я добавил изображение для уточнения. С португальского «CÓDIGO» - это поле со списком 2, кодовое пространство. «ПУНКТ» - описание (combobox3).