AYUDA URGENTE CON VB

16/07/2008 - 20:08 por Bruja | Informe spam
Hola Todos,

Desde ya gracias por su ayuda, ahora les platico.
Hice un programa de busqueda en una base de datos. Me corría super bien, si
no le ingresaba la palabra exacta tal como estaba en la basde datos decía que
no existía eso estaba perfecto. Ahora no sé que le moví que con que le
ingrese una letra me dice que si se encontró y obvio me saca el primer
articulo que encuentre que tiene esa letra. Les pongo mi código para ver si
me pueden decir cual es mi error, espero me puedan ayudar por que ya ese me
quemó el cerebro GRAX. Besos
La bruja - May

Private Sub CommandButton1_Click()
'Definición de variables, fila se usa para guardar en que fila se encuentra
y varbus es la variable a buscar
Dim fila As Long, varbus As String
'Manda llamar al procedimiento BuscaRegistro con la variable fila
BuscaRegistro fila, varbus
'Cancela la búsqueda definitivamente, se acaba el programa
If varbus = "" Then Exit Sub
'Si no encontró la variable le avisa al usuario
If fila = 0 Then
MsgBox "La búsqueda no arrojó ningún resultado", vbInformation,
"BÚSQUEDA SIN RESULTADOS"
'Si desea buscar de nuevo, reinicia sólo el program si no se acaba
Do While MsgBox("¿Desea intentarlo de nuevo?", vbRetryCancel +
vbQuestion, "BUSQUEDA") = vbRetry
BuscaRegistro fila, varbus
MsgBox "La búsqueda no arrojó ningún resultado", vbCritical,
"ERROR"
Loop
MsgBox "Término de la búsqueda", vbExclamation, "FIN"
'Si lo encuentra le avisa al usuarion que la búsqueda fue exitosa y le da
los resultados
Else
MsgBox "Tu búsqueda fue exitosa", vbExclamation, "BÚSQUEDA EXITOSA"
MsgBox "El Equipo secador " & Worksheets("GRAL").Cells(fila, 3) & vbCr & _
"seca el material " & Worksheets("GRAL").Cells(fila, 1) & vbCr & _
" con código " & Worksheets("GRAL").Cells(fila, 2) & vbCr, vbOKOnly,
"RESULTADOS"""
Worksheets("BÚSQUEDA").Cells(10, 2) = "Materia Prima"
Worksheets("BÚSQUEDA").Cells(10, 3) = "Código"
Worksheets("BÚSQUEDA").Cells(10, 4) = "Secador"
Worksheets("BÚSQUEDA").Cells(11, 2) = Worksheets("GRAL").Cells(fila, 1)
Worksheets("BÚSQUEDA").Cells(11, 3) = Worksheets("GRAL").Cells(fila, 2)
Worksheets("BÚSQUEDA").Cells(11, 4) = Worksheets("GRAL").Cells(fila, 3)
End If
End Sub
'Procedimiento de búsuqeda
Sub BuscaRegistro(fila As Long, varbus As String)
On Error Resume Next
'Le solicita al usuario la variable a buscar
varbus = UCase(InputBox("Introduce el nombre de material o código que deseas
buscar", "BUSCAR"))
'Si el usuario cancela o deja en blanco en vez de introducir algo, le aviso
lo que sucedió
If varbus = "" Then
MsgBox "Se canceló o no se introdujo ningún parámetro a buscar",
vbCritical, "ERROR"
'Si desea buscar de nuevo, reinicia sólo el program si no se acaba
Do While MsgBox("¿Desea iniciar la búsqueda o cancelarla
definitivamente?", vbQuestion + vbOKCancel, "BÚSQUEDA") = vbOK
BuscaRegistro fila, varbus
Loop
Exit Sub
'Busca la variable
Else
'busca en columna A.
fila = Worksheets("GRAL").Range("A2:B1000").Find(varbus).Row
End If
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
16/07/2008 - 23:22 | Informe spam
hola, May !

Mostrar la cita
en tu mensaje anterior con asunto de "MEGA URGENTE" ya habias dejado un codigo que te funciono muy bien ;)
(aparentemente) dentro de las modificaciones que expones en este nuevo codigo, hay dos o tres cambios que pudieran ser la causa:

1) en tu codigo anterior, el procedimiento Sub BuscaRegistro(...
a) SOLO requeria de la variable fila
b) (ahora) le agregas el requerimiento de la variable varbus
c) ambos argumentos son ByRef (por omision) lo que significa que NO se pueden modificar dentro del procedimiento "llamado"
d) si de todas formas vuelves a "preguntar" por la variable varbus (en el InputBox)... para que lo solicitas ByRef ???
e) igual para el argumento fila (es lo que vas a devolver en caso de encontrar la variable de busqueda) -???-

2) agregaste un bucle Do While MsgBox(...) = vbOK y tienes una instruccion "Exit Sub"
revisa cual es el proposito de ambas (y como es que estan "afectando" a tus instrucciones) y si son (realmente) "necesarias" -???-

3) si requieres que tus variables fila y varbus puedan ser "administradas" por ambos procedimientos...
a) retiralas de la declaracion al inicio del procedimiento
b) ponlas en el area de declaraciones -> a nivel de modulo
c) retiralas como argumentos en el procedimiento Sub BuscaRegistro(...

4) en el peor de los casos... prueba "regresando" al codigo que SI te funciono (el del mensaje "MEGA URGENTE")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el resto del mensaje con el codigo (nuevo) __
Mostrar la cita
#2 Bruja
17/07/2008 - 03:51 | Informe spam
Hola Hector,

Como siempre muchas gracias por tu respuesta
Te comento que ya le hice de todas las formas y naada!!!!! Acabo de usar mi
macro pasada y ahora tiene el mismo error que no busca de manera exacta!!!

Me podrías ayudar por fa??? Estoy que me vuelvo loca y la tengo que entregar
ya!!!
Sabes de un método infalible que haga una busqueda exacta de string???
Espero me puedas ayuda
De antemano muuuchas Gracias!!!
Besos
La Bruja - May


"Héctor Miguel" escribió:

Mostrar la cita
#3 Héctor Miguel
17/07/2008 - 08:11 | Informe spam
hola, May !

Mostrar la cita
dependiendo de lo que signifique hacer una "busqueda exacta de string"... (o sea)
"que" es (exactamente) lo que se introduce en el InputBox y...
"que" es (exactamente) lo que se podria encontrar en el rango especificado...

podrias cambiar la instruccion de busquda...
Mostrar la cita
por otra instruccion que utilice mas argumentos disponibles en el metodo .Find
consulta en la ayuda en linea "que" hacen los argumentos LookIn, LookAt, y MatchCase (p.e.)

fila = Worksheets("gral").Range("a2:b1000").Find( _
What:=varbus, _
After:=Worksheets("gral").Range("a2"), _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=True).Row

saludos,
hector.
#4 Bruja
17/07/2008 - 10:27 | Informe spam
Hola Todos,

Cambié varias cosas de mi programa y ahora corre a la perfección, hace
búsuqeda exacta de la variable que ingresa el usuario y hace todo lo demás
que yo quería.
Sé que no es un programa muy bueno y que las personas de este foro de seguro
lo harían mil veces mejor, pero como me gusta retribuir siempre acá se los
pongo.
Hector y Antonio de nuevo mil gracias por toooda su ayuda =)
Saludos,
La Bruja - May

PROGRAMA PARA BUSCAR EN UNA BASE DE DATOS EN EXCEL
Private Sub CommandButton1_Click()
'Definición de variables, fila se usa para guardar en que fila se encuentra
y varbus es la variable a buscar
Dim fila As Long, varbus As String
'Manda llamar al procedimiento BuscaRegistro con la variable fila
BuscaRegistro fila, varbus
'Cancela la búsqueda definitivamente, se acaba el programa
If varbus = "" Then Exit Sub
If fila = 0 Then Exit Sub
'Si lo encuentra le avisa al usuarion que la búsqueda fue exitosa
MsgBox "Tu búsqueda fue exitosa", vbExclamation, "BÚSQUEDA EXITOSA"
'Despliega los resultados en un MsgBox
MsgBox "EL EQUIPO SECADOR " & Worksheets("GRAL").Cells(fila, 3) & vbCr & _
"SECA EL MATERIAL " & Worksheets("GRAL").Cells(fila, 1) & vbCr & _
" CON CÓDIGO " & Worksheets("GRAL").Cells(fila, 2) & vbCr, vbInformation,
"RESULTADOS"
'Despliega los resultados en la celdas predeterminadas
Worksheets("BÚSQUEDA").Cells(10, 2) = "Materia Prima"
Worksheets("BÚSQUEDA").Cells(10, 3) = "Código"
Worksheets("BÚSQUEDA").Cells(10, 4) = "Secador"
Worksheets("BÚSQUEDA").Cells(11, 2) = Worksheets("GRAL").Cells(fila, 1)
Worksheets("BÚSQUEDA").Cells(11, 3) = Worksheets("GRAL").Cells(fila, 2)
Worksheets("BÚSQUEDA").Cells(11, 4) = Worksheets("GRAL").Cells(fila, 3)
End Sub
'Procedimiento de búsuqeda
Sub BuscaRegistro(fila As Long, varbus As String)
On Error Resume Next
'Le solicita al usuario la variable a buscar
varbus = UCase(InputBox("Introduce el nombre de material o código que deseas
buscar", "BUSCAR"))
'Si el usuario cancela o deja en blanco en vez de introducir algo, le aviso
lo que sucedió
If varbus = "" Then
MsgBox "Se canceló o no se introdujo ningún parámetro a buscar",
vbCritical, "ERROR"
'Si desea inicar la búsqueda reinicia sólo el programa, si no se acaba
If MsgBox("¿Desea reiniciar la búsqueda o cancelarla definitivamente?",
vbQuestion + vbRetryCancel, "BÚSQUEDA") = vbRetry Then
BuscaRegistro fila, varbus
Else
MsgBox "Término de la búsqueda", vbExclamation, "FIN"
Exit Sub
End If
'Busca la variable
Else
fila = Worksheets("GRAL").Range("A2:B1000").Find(varbus).Row
'Si no encontró la variable le avisa al usuario
If fila = 0 Then
MsgBox "La búsqueda no arrojó ningún resultado", vbInformation,
"BÚSQUEDA SIN RESULTADOS"
'Si desea buscar de nuevo reinicia sólo el programa, si no se acaba
If MsgBox("¿Desea intentarlo de nuevo?", vbYesNo + vbQuestion,
"BUSQUEDA") = vbYes Then
BuscaRegistro fila, varbus
Else
MsgBox "Término de la búsqueda", vbExclamation, "FIN"
Exit Sub
End If
End If
End If
End Sub
'Botón para borrar la información de la búsuqeda
Private Sub CommandButton2_Click()
Worksheets("BÚSQUEDA").Range("B10:E11").ClearContents
End Sub

"Héctor Miguel" escribió:

Mostrar la cita
Ads by Google
Search Busqueda sugerida