El combobox no me toma la fila que le indico

Tengo un problema que no he podido encontrar la solución. Tengo un combobox que me guarda datos de la columna M, con estos datos la idea es darle click y que me llene un textbox. Mi problema en general es que al darle click a un valor del combobox me toma valores de otra columna.

Al seleccionar y dar click al producto Shion Ex debería ir a la columna M y activar la celda, pero se va a la fila F y se posiciona en uno de los Shion Ex y no me permite cambiar la cantidad, ya que pasa lo de la foto 2.

Adjunto código

Sub Agregar1(combo As ComboBox, dato As String)
For i = 0 To combo.ListCount - 1
    Select Case StrComp(combo.List(i), dato, vbTextCompare)
        Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
        Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
    End Select
Next
combo.AddItem dato 'Es mayor lo agrega al final
End Sub
Private Sub CommandButton1_Click()
Sheets("Sheet1").Activate
If nueva = "" Then
MsgBox "Está dejando campos requeridos vacios, favor complete", vbInformation, "LuffyToys"
nueva.SetFocus
Else
ActiveCell.Offset(0, 1) = Val(nueva)
MsgBox "Datos actualizados correctamente", vbInformation, "Luffytoys"
Me.cantidad = ""
Me.nueva = ""
End If
End Sub
Private Sub ComboBox1_Change()
Dim q As Double
    var3 = ComboBox1.Column(0)
    Cells.Find(What:=ComboBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, lookat:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
If var3 = ActiveCell.Value Then
For q = 2 To 100
        If Cells(q, 13) = Me.ComboBox1.Value Then
        Me.cantidad.Value = Cells(q, 14)
    End If
Next
End If
End Sub
Private Sub UserForm_Activate()
'Cargar los ámbitos
    Set h = Sheets("Sheet1")
    For i = 2 To h.Range("M" & Rows.Count).End(xlUp).Row
        Call Agregar1(ComboBox1, h.Cells(i, "M"))
    Next
End Sub

2 respuestas

Respuesta
1

El problema lo tienes en la línea cells find a como tienes escrita la instrucción busca en toda la hoja y como resultado siempre se va a posicionar en la celda F puesto que es el primer resultado que encuentra, haciendo unos cambios en tu macro como sigue

Private Sub ComboBox1_Change()
On Error Resume Next
    Var3 = ComboBox1.Column(0)
    If Err.Number > 0 Then GoTo sal
    indice = WorksheetFunction.Match(Var3, Range("m:m"), 0)
    On Error GoTo 0
    Range("m1").Cells(indice, 1).Select
    cantidad.Text = Range("m1").Cells(indice, 2)
sal:
End Sub

la macro delimita la busqueda a la columna M y si encuentra el resultado trae la cantidad nueva y ahora si al momento de modificar la cantidad la colocara donde debe.

Respuesta

En la columna de donde se llena el combobox (la M), ¿es posible que se repita el mismo nombre de figura?

La idea es que no se repita, por lo mismo cree un formulario que modificará el valor de cantidad, el problema es que no se posiciona en la columna M

Lo que quieres hacer lo lograrías muy fácilmente si usaras directamente las propiedades nativas del combobox, como el RowSource, el BoundColumn y el ListIndex. Con eso matas 3 pájaros de un tiro, pero veo que usas una función independiente para llenar el combobox, por eso te pregunte si era posible que los datos en la columna M se repitieran, si esos datos serán únicos y nunca se van a repetir, te recomiendo que llenes el combobox con el RowSource, luego le apliques el total de encargos con BoundColumn, y también selecciones la celda correspondiente con ListIndex.

Si no sabes de que te hablo, déjame saber y te escribo el código

Salud2s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas