Hola caballeros, A los conocedores en la materia, quieor pedirles que me presten una pequeña (grand) ayuda (grande para mi por mi falta de conocimiento para hacerlo.
Se trata de un filtro desde un formulario el cual tiene un TextBox para filtrar y 2 optionbutton
Lo que pretendo es que el textBox filtre en 2 columnas segun la pagina seleccionada (OptionButton Filtrar Paiga 1) en columnas C y D
pagina seleccionada (OptionButton Filtrar Paiga 2) en columnas N y O
Manteniendo la funcion actual de los OptionButton
En el libro, la hoja Lista Repuestos esta dividida en 2 paginas; Pagina 1 B1 hasta K51
La 2ª pagina desde M1 hasta V51
Adjunto | Tamaño |
---|---|
![]() | 630.69 KB |
Hola
Parece que has eliminado un montón de funciones, y entre ellas, alguna de las que utiliza el formulario.
Entiendo que es el que aparece al pinchar en el botón "Eliminar" ok?
Un saludo
Si, ese es
EDITADO:
dejame corrigir el libro, pues algo esta mal, ya lo subo de nuevo
Le faltaba esto Sub FiltrarLista2(col1, col2, col3)
Tiene la hoja Filtro (oculta) que la necesita, la hoja Lista Repuestos y es todo lo que necesita el frmEliminar para su ejecucion
marco option Filtrar pagina 1 y me filtra de la pagina 1 toda columna D sin escribir algo en el TextBox, asi lo quiero, está bien
marco option Filtrar pagina 2 y me filtra de la pagina 2 toda columna O sin escribir algo en el TextBox, asi lo quiero, está bien
Si escribo Ej: "sea" (sin comillas) y piso el buton Filtrar me da todo que tenga sea (SEAL, SEALL. etc) de la pagina que el option esté marcado, mui bien, asi esta bien
Lo anterior está filtrando de la columna D (pagina 1) o O (pagina 2) segun el option marcado.
¿Pero que quiero? que al marcar uno de los option, o, al escribir algo en el textBox y pisar el buton Filtrar que no solo filtre de la columna D o de la O según la pagina, quiero que tambien incluia la columna C y N quedando filtrando en las 2 columnas:
Marco el option Filtrar Pagina 1 filtre las C y D y Filtrar Pagina 2 en las N y O
A ver si te puedo entender...
Como dices, con las columnas D y O funciona perfectamente. He probado la opción de borrar y también funciona.
¿Lo que quieres es que si ponemos 1T en el diálogo y le damos a filtrar, te aparezcan también los valores en los que el código de producto empiece por 1T?
Eso mismo es amigo Cron.
Repito, disculpame: Tal como esta, filtra solo de la columna D o O,
Quiero que filtre en las columnas Cy D de la pagina 1 y en la Pagina 2 N y O.
Como dices (preguntas) eso es; si selecciono la pagina 1 y escribo en el textbox 1t, que me presente todos los que contienen 1t si escribo se me dé los SEAL, SEALL ETC
Selecciona Filtrar Pagina 1 y escribe tu en el textbox esto = 1t y pisa el buton Filtrar y te dice que no hay
borera y escribe ro, pisa el buton Filtrar y te aprecen los renglones contentivos de RO (rolinera por ejemplo)
Y si seleccionas Filtrar Pagina 2 sucede lo mismo
Aqui estaré hasta las 4 pm que es la hora que quitan la energia eloectrica en esta zona hasta las 7pm que vuelve nuevamente.
ESTO ES VENEZUELAAAAAAAAAA, la tuierra de los sin comida, sin medicinas, sin agua, sin luz eletrica, y cuente usted de soñar
Hola
Tras revisar un poco, se me ha ocurrido lo siguiente:
En todos los lugares donde aparece:
Call FiltrarLista2("B", "K", "D")
Sustituirlo por
Call FiltrarLista2("B", "K", "D", "C")
De la misma manera, donde aparece
Call FiltrarLista2("M", "V", "O")
sustituirlo por:
Call FiltrarLista2("M", "V", "O", "N")
Una vez hecho esto, tenemos que hacer que la función FiltrarLista2 acepte el 4º parámetro. Para eso, en la definición sustituir
Sub FiltrarLista2(col1, col2, col3)
por
Sub FiltrarLista2(col1, col2, col3, col4)
Finalmente, vamos a hacer que el código haga algo con col4:
For i = 11 To 46
If (Cells(i, col1) <> "") And _
((UCase(h1.Cells(i, col3)) Like "*" & UCase(txtFiltro) & "*") Or _
(UCase(h1.Cells(i, col4)) Like "*" & UCase(txtFiltro) & "*")) Then
h1.Range(col1 & i & ":" & col2 & i).Copy h2.Cells(j, "A")
'h1.Range(col1 & i & ":" & col2 & i & ":" & col3 & i & ":" & col4 & i).Copy h2.Cells(j, "A")
h2.Cells(j, "K") = i
j = j + 1
End If
Next
Voy probando Cron, gracia spor tu empeño y tiempo.
Ya dire algo (si estoy vivo jejejejje )
Funciona amigo, millon de gracias, y una pregunta mas. En el evento "Private Sub cbtElimi_Click()" no hace falta agregar tambien las 2 columnas?
If OptionButton1 Then
c1 = "B": c2 = "K": c3 = "D"
ElseIf OptionButton2 Then
c1 = "M": c2 = "V": c3 = "O"
End If
If OptionButton1 Then
c1 = "B": c2 = "K": c3 = "D": c4 = "C"
ElseIf OptionButton2 Then
c1 = "M": c2 = "V": c3 = "O": c4 = "N"
End If
Igual aqui en el mismo evento
Call FiltrarLista2(c1, c2, c3, c4)
Sí, esa parte se me había escapado. Pero no como dices. Prueba lo siguiente:
If OptionButton1 Then
c1 = "B": c2 = "K": c3 = "D" : c4 = "C"
ElseIf OptionButton2 Then
c1 = "M": c2 = "V": c3 = "O" : c4 = "N"
End If
Y luego, al final del procedimiento, sustituye:
Call FiltrarLista2(c1, c2, c3)
por:
Call FiltrarLista2(c1, c2, c3, c4)
Un saludo
Ya, te adelantaste mientras yo corregia el detalle
Funciona perfecto
iré averiguar si en el evento Eliminar no hace interferencia negativas alguna
Amigo Cron, algunos temas los tengo abierto, esperando respuesta de alguien extendido, ¿podrias echarle un ojo? Gracias miles
Ya lo he mirado. Lo que no contesto es porque no lo sé. Espera una respuesta de Paco, aunque debe estar muy liado con el trabajo últimamente...
Saludos
Perfecto, esperar´ñe por paco si acaso se desocupa
QUiero hacerte una ptregunta mas referente al actual, repito = funciona perfecto pero;
Quisiera poder agregarle algo de MsgBox, algo como esto
'Mostrar resultado filtrados, por el boton Filtro en ListBox
Private Sub cbtFiltro_Click() 'LISTO
'Por.Dante Amor http://www.todoexpertos.com/preguntas/6tq6n98o8eefyo4j/arreglar-la-macro...
If OptionButton1 Then
Call FiltrarLista2("B", "K", "C", "D")
ElseIf OptionButton2 Then
Call FiltrarLista2("M", "V", "N", "O")
End If
'le meti esto
MsgBox "Selecciona una página.", vbCritical, "Selección"
End Sub
Medio funciona pero al tener uno de los option seleccionado y pisar el botón, sI NO EXISTE EL DATO aparece el mensaje de que no exiaste pero TAMBIEN aparec e el mensaje de que seleccione una Pagina.
Se podrá arreglar SOLO para que si escribo algo en el TextBox y piso el boton Filtrar SIN TENER ninguno de los option seleccionado me mande ese mensage?
EDITADO:
Podria ser al excribir la 1ª letra en el TextBox, SI NO EXISTE NINGUN OPTION SELECCIONADO, me mande el mensage "Por Favor Seleccione una página"
Voy a tratar por el ultimo y vere si tengo esa capacidad
Algo de esto ¿seria?
Private Sub txtFiltro_Change() 'TextBox para filtrado
If OptionButton1 And OptionButton2 = False Then
MsgBox "Selecciona una página.", vbCritical, "Selección"
Exit Sub
ElseIf
'SI ESTÁ TRUE ¿QUE HACE?
If OptionButton1 And OptionButton2 = True Then
OptionButton1_Click and OptionButton2_Click
End If
Algo está malisimo aqui que al editar el codigo de una me da error
Fin de EDICION
No sé si será en el evento "Private Sub cbtFiltro_Click()" o en el "Sub FiltrarLista2(col1, col2, col3, col4)"
De eso lo sabes tu mucho mejor que yo
Entra en FiltrarLista2. Al final tienes un If que es donde tienes que poner eso.
If u2 > 1 Then
Lista2.RowSource = h2.Name & "!A2:K" & u2
<---------------------------AQUÍ LO QUE QUIERAS QUE OCURRA SI HAY DATOS
Else
MsgBox "No se encuentra.", vbExclamation, "Inexistente"
<---------------------------AQUÍ LO QUE QUIERAS QUE OCURRA SI NO HAY DATOS
End If
Un saludo
Ahí está bien la cosa dice que no se encuentra, mui bien pero me refiero a que:
Con el formulario abierto y escribo en el TextBox. Si no existe NINGUNO DE LOS 2 OPTIONBOTTON seleccionado, me mande el mensage que " Favor seleccionar una página"
Ahí donde dices solo, cambiaria el texto al no existir el dato
¿Y por qué no seleccionas por defecto uno de los dos radiobuttons? Es lo que recomiendan los expertos en usabilidad:
Alzado.org - Eduardo Manchón
Olga Carreras
Checkboxes vs. Radio Buttons - Jakob Nielsen
Pero vamos, esto ya no es Excel, es un paso más: diseño, usabilidad, experiencia de usuario...
Saludos