es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Selecciona un nombre de la lista desplegable, encuentra todos los nombres coincidentes en la columna E, luego coloca todos los números correspondientes de la columna H en otra lista desplegable.

He estado buscando durante casi 2 días para encontrar una respuesta a esto y me está volviendo loco. Soy muy nuevo en VBA, así que no tengo ningún código para compartir, solo he estado probando cosas que encuentro en otros sitios y en YouTube. He estado trabajando en una hoja de registro de inicio de sesión de técnicos y estos son los pasos que necesito realizar:

  1. Selecciona tu nombre del combobox “Técnico de Metrología” en la hoja de “Iniciar sesión de Técnico de Metrología”
  2. VBA busca a través de la columna H en la hoja de “rastreador de metrología” para encontrar todos los nombres coincidentes
  3. Los números de lote de la columna E en la hoja de “rastreador de metrología” se colocan en el combobox “Número de Lote” si el valor en la columna M en la hoja de “rastreador de metrología” es igual a “Pend.”

He intentado esto Create Dependent Combo Boxes on a Userform – Excel VBA y no funcionó, solo devolvió todos los valores de la columna que necesito y todos los otros artículos y videos eran prácticamente lo mismo.

Una cosa que debo mencionar es que la mayoría de los valores en el rastreador de metrología se hacen referencia desde otro archivo, por lo que los números de lote son iguales a un valor de celda en otro archivo.

Edit:
He intentado esto aunque sabía que no iba a funcionar

Private Sub cboTech_change()

Select Case cboTech.Value
    Case Is = "employee 1"
        cboLotNum.RowSource = "LotNumber"
    Case Is = "employee 2"
        cboLotNum.RowSource = "LotNumber"
    Case Is = "employee 3"
        cboLotNum.RowSource = "LotNumber"
End Select

End Sub

y también intenté esto, pero seguía obteniendo un “error de tiempo de ejecución ‘424’ se requiere un objeto”

Sub FndLot()

Dim idx As Long
Dim lngRow As Long

    idx = TechBox.ListIndex

    If idx <> -1 Then
        lngRow = TechBox.ListIndex
        Worksheets("Metrology Tracker").Range("E" & lngRow).Value = LotNum.Value
    End If
End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando crear un formulario de usuario en Excel VBA que permita a los técnicos iniciar sesión y seleccionar números de lote. Aquí tienes algunas sugerencias sobre cómo lograr la funcionalidad deseada:

    1. Para la hoja de registro de inicio de sesión de los técnicos, puedes crear un cuadro combinado utilizando controles ActiveX. En la hoja “Registro de inicio de sesión de metrología”, ve a la pestaña “Desarrollador” y haz clic en “Insertar” en la sección de Controles. En la lista desplegable, selecciona “Cuadro combinado” bajo los controles ActiveX. Arrastra y suelta el cuadro combinado en la ubicación que desees en la hoja.
    2. En el código VBA del cuadro combinado, puedes utilizar la propiedad “ListFillRange” para rellenar el cuadro combinado con los nombres de tus técnicos. Por ejemplo:

    Private Sub ComboBox1_Change()
        ComboBox1.ListFillRange = "Hoja1!A2:A100" ' reemplaza con tu propio rango de datos
    End Sub
    
    1. Para buscar nombres coincidentes en la hoja “rastreador de metrología”, puedes usar un bucle para recorrer los valores en la columna H y compararlos con el técnico seleccionado en el cuadro combinado. Por ejemplo:
    Private Sub ComboBox1_Change()
        Dim techName As String
        Dim lotList As String
    
        techName = ComboBox1.Value
    
        For i = 2 To Worksheets("rastreador de metrología").Cells(Rows.Count, "H").End(xlUp).Row
            If Worksheets("rastreador de metrología").Cells(i, "H").Value = techName Then
                If Worksheets("rastreador de metrología").Cells(i, "M").Value = "Pend." Then
                    lotList = lotList & Worksheets("rastreador de metrología").Cells(i, "E").Value & ";"
                End If
            End If
        Next i
    
        ComboBox2.List = Split(lotList, ";")
    
    End Sub
    

    Este código asume que los números de lote que deseas llenar en el segundo cuadro combinado están en la columna E de la hoja “rastreador de metrología”, y que el estado está en la columna M (por ejemplo, “Pend.”). Crea una cadena con todos los números de lote coincidentes separados por punto y coma, y luego divide esa cadena en una matriz que se utiliza para llenar el segundo cuadro combinado.

    1. Si los números de lote en la hoja “rastreador de metrología” se hacen referencia desde otro archivo, deberás asegurarte de que ese archivo esté abierto y accesible para el código VBA. Puedes utilizar el método Workbook.Open para abrir el archivo, y luego referirte a los números de lote utilizando las fórmulas o valores de celda correspondientes.

    Espero que estas sugerencias te ayuden a comenzar en la dirección correcta. ¡No dudes en pedir ayuda si te quedas atascado nuevamente!

Comments are closed.