Saltar al contenido

Recommended Posts

publicado

Buenos días compañeros.

necesito de la ayuda de ustedes para configurar un combobox que esta ingresado en la hoja de excel (NO ES FORMULARIO) la funcion que deseo es que cuando ingrese texto en un combobox me busque las proximidades del texto ingresado (que lo busque en una columna predeterminada) ejemplo

en la columna A tengo los siguientes datos.

casa morada

la casa 

remolacha morada

sandia

cuando ingrese la palabra morada en el combobox, el me desplegue los datos  que contienen la frase MORADA es lo que necesito..

me podrian ayudar con algun codigo...

 

 

publicado

Hola,

Algo como esto debería servir de acuerdo la explicación:

 Private Sub ComboBox1_Change()
    Dim rng As Range
    Dim cell As Range
    Dim searchText As String
    Dim results As Collection
    Dim item As Variant
    
    Set rng = Me.Range("A1:A4")
    
    searchText = ComboBox1.Text
    
    Set results = New Collection
    
    For Each cell In rng
        If InStr(1, cell.Value, searchText, vbTextCompare) > 0 Then
            results.Add cell.Value
        End If
    Next cell
    
    ComboBox1.Clear
    
    For Each item In results
        ComboBox1.AddItem item
    Next item
End Sub

Private Sub Worksheet_Activate()
    ComboBox1.Clear
End Sub

image.png.71b474e504f0c3823e9003b315624d1d.png

publicado

hola Israel gracias por tomarte el tiempo para ayudarme pero no funciona el archivo que envió.

te explico cuando abro  tu Excel y borro la palabra MORADA …luego si ingresas "LA" se come la L y solo aparece la A no se si me explico, así mismo si  con las demás palabras no escribí la primera inicial...

 

necesito escribir la palabra y que el combobox me valla ubicando las frases aproximadas dentro del list del combobox...

publicado (editado)

Podría ser por la forma en la que se limpia el combobox, deja hacer unos cambios en el código.

Pues creo que podría ayudarte si queda así

SAqbH.gif

Editado el por Israel Cassales
Agregar texto
publicado

hola Israel mejoro  el tema del ingreso ya no borra la primer letra, sin embargo si buscas la frase "casa" solo ubica "casa morada"  no ubica "la casa " la cual también tiene la frase casa, el combobox debe ubicar el texto ingresado dentro de las celdas ya pre establecidas....

 

otra consulta. cuando ya el combobox trabaje bien ubicando las frase a buscar, como podría seleccionar la frase que el combobox despega hacia abajo . darle clic y mande el dato seleccionado  a una celda X por ejemplo a la G1.

Consulta: en la lista que desplega el combox no tiene la capacidad de mostrar 2 celdas, como un listbox que muestra varias celdas?

 

Gracia por la ayuda que me estas brindando

publicado

Hola, buen día.

hace 15 horas, dmslop dijo:

sin embargo si buscas la frase "casa" solo ubica "casa morada"  no ubica "la casa " la cual también tiene la frase casa,

Eso no es exacto, si escribe la palabra casa, le muestra ambas celdas que contienen la palabra casa. Tal como se muestra en el ejemplo:

image.png.9d7f3786291608f2d61354859f81fe1d.png

Para sus otras dos consultas le recomiendo abrir un tema por cada una, el motivo es porque el tema se empieza a extender a escenarios que no son inherentes al tema original. Es posible que también pueda ayudarle o reciba apoyo de algún maestro adicional, incluso aún es posible que algún maestro participe en este mismo en esas consultas adicionales.

Tome en cuenta por favor que se brinda ayuda, no soluciones personalizadas.

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.