Ayuda en visual

estoy dándole seguimiento a un pequeño programa en vb y soy principiente quisiera saber para que me sirve este unidad = Application.WorksheetFunction.VLookup(combo_descripcion.Value, INVENTARIO.Range("B2:R10000"), 3, False)

1 Respuesta

Respuesta

Es para hacer una búsqueda en una columna de un rango de celdas.

El primer parámetro (combo_descripcion.Value) es el valor a buscar

El segundo parámetro (INVENTARIO. Range("B2:R10000")) es el rango de celdas que va a utilizar la función pero solo busca en la primera columna, en este caso el valor se buscara en la columna B2:B10000

El tercer argumento (3) es el numero de columna que se va a mostrar como resultado de la búsqueda, por ejemplo si se encuentra en la valor en la celda B5, la celda que se va a mostrar como resultado es la D5 porque B=1, C=2, D=3, etc.

El cuarto parámetro (False) es para indicar si se va a hacer una búsqueda exacta (False) o aproximada (True).

muchas gracias haber si puedes ayudarme con esto tengo un formulario necesito que al momento de elegir un nombre en mi combobox en el otro combobox que pregunta que es lo que debe el solicitante seleccionado en el anterior combo me ponga solo las cosas que ese solicitante me ha pedido.

mi pregunta es como realizar la búsqueda conforme al nombre que elija.

¿Cómo llenas los combobox, con un rango de celdas, con una consulta a una base de datos (Recordset), con un arreglo (array) de datos?

¿La búsqueda la haces en una hoja de Excel, en una base de datos?

RowSource mira t dejo el ejemplo de como se rellena uno a través de un radio

Private Sub radiobtn_herramientas_Click()
If radiobtn_herramientas.Value = True Then
'combo_descripcion.Clear
'Sheets("INVENTARIO").Select
'Range("b2").Select
'Do While ActiveCell.Value <> ""
'combo_descripcion.AddItem ActiveCell
'ActiveCell.Offset(1, 0).Select
'Loop
combo_descripcion.RowSource = "=INVENTARIO!DESCRIPCIÓN"
txt_cantidad.Locked = True
txt_cantidad.Text = "1"
End If
End Sub

la búsqueda se hace a una hoja de excel

Primero debes inicializar los valores de los combobox

Private Sub UserForm_Initialize()
    Dim datos As Variant
    datos = Range("B1:B4") 'nombres de los silicitantes
    Me.ComboBox1.List = datos
    Me.ComboBox2.List = Array() 'el combobox de lo que debe el solicitante debe estar vacio
End Sub

Después dependiendo del valor del combobox1 se llena el combobox2

Private Sub ComboBox1_Change()
    Dim inicioDatosMostrar As Excel.Range 'Valores que se agregan al segundo combobox
    Dim inicioDatosFiltro As Excel.Range 'Valores que se comparan con el valor del primer combobox
    Dim datos As Variant
    Dim i As Long
    Dim j As Long
    Set inicioDatosMostrar = Range("C1")
    Set inicioDatosFiltro = Range("B1")
    Me.ComboBox2.Clear
    datos = Array()
    Do While inicioDatosMostrar.Offset(i, 0) <> Empty
        If inicioDatosFiltro.Offset(i, 0) = Me.ComboBox1.Value Then
            ReDim Preserve datos(j)
            datos(j) = inicioDatosMostrar.Offset(i, 0)
            j = j + 1
        End If
        i = i + 1
    Loop
    Me.ComboBox2.List = datos
End Sub

oh muchas gracias ! lo probare.

el código para los combox vacios

Private Sub UserForm_Initialize()
Dim datos As Variant
datos = Range("B1:B4") 'nombres de los silicitantes
Me.ComboBox1.List = datos
Me.ComboBox2.List = Array() 'el combobox de lo que debe el solicitante debe estar vacío
End Sub

lo coloco en el formulario pero me sigue apareciendo todos los registros y después me lo deja bacio.

Debes quitar la propiedad RowSource del combobox2, el RowSource se usa cuando la lista es fija, pero como en este caso la lista es variable se debe quitar.

ok lo chequearé podrías decirme la función de este condigo que realiza?

Do While ActiveCell.Value <> ""
combo_descripcion_entr.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Loo

Es un ciclo, en lenguaje humano seria algo como

Mientras la celda activa sea no vacía(linea 1) agregar su valor al combobox(linea 2) y después seleccionar(para convertir en celda activa) la siguiente celda (linea 3) y repetir el ciclo (linea 4).

gracias. en el código en que ayudaste Me.ComboBox1.Value Then

me marca error de compilación se esperaba un then o go to .

Debes cambiar los nombres de los combobox a los nombres que estas usando. Yo les llame combobox1 y combobox2, pero en tu caso no se como se llamen, el combobox2 es el dependiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas