Form no encuentra dato en hoja excel
Tengo un libro de excel donde cargo varios formularios, pero el libro excel se oculta para trabajar directamente con los formularios,, con un botón alterno se llama el excel por si se necesita, ok
El problema radica en que, siempre que cargo el form nunca encuentra los datos registrados,, solo ejecuta el proceso cuando se entra al excel y se vuelve a cargar otra ves el form, pero si se llama directamente el form siempre sale el mensaje,,, " NO EXISTE NINGÚN DATO",, ¿por sucede esto?
1 respuesta
Private Sub CommandButton1_Click()
Dim id_nombre, idbusca As String
Dim UltimaFilaEncontrado As Integer
Dim encontrado As Range
Dim Fila As Integer
Hoja1.Unprotect "5"
TextBox9.Value = "" ' si el valor a buscar no esta ingresado salgo.....
If TextBox1.Value = "" Then
MsgBox "Digita el N° de indentidad a Buscar"
Exit Sub
End If
'Asigno valores a las variables
Fila = 5
id_nombre = TextBox1.Text
UltimaFilaEncontrado = 0
'Aqui busco al rango 1000 que si existe , cabe indicar por prueba pongo 15
Do While Fila < 5500
Fila = Fila + 1
If TextBox1.Text = Range("b" & Fila).Value Then ' si lo encuentro digo en que fila hasta cuando salga
UltimaFilaEncontrado = Fila
End If
Loop
'si el valor no fue encontrado seguirá siendo 0 entonces no encontré nada salgo del sub ya no sirve que siga haciendo nada
If UltimaFilaEncontrado = 0 Then
MsgBox "Elemento NO encontrado"
Exit Sub
End If
' pero si lo encuentro ... primero blanqueo TODO,... y luego me posiciono en la celda Ultima que encontré
'Luego de esto le cambio el color
' Range("C6:C5500").Interior.ColorIndex = xlColorIndexNone
' Range("C" & UltimaFilaEncontrado).Select
' Range("C" & UltimaFilaEncontrado).Interior.Color = vbYellow
Dim nom As String
nom = Range("C" & UltimaFilaEncontrado).Value ' aqui doy el valor a Nombre no se por que pero bueno.....
'aqui lleno todos los textos del formulario
TextBox2 = nom
TextBox4 = Range("Q" & UltimaFilaEncontrado).Value
TextBox5 = Range("E" & UltimaFilaEncontrado).Value
TextBox6 = Range("P" & UltimaFilaEncontrado).Value
TextBox7 = Format(Range("G" & UltimaFilaEncontrado).Value, "[$-80A]dddd, dd"" de ""mmmm"" de ""yyyy")
TextBox8 = Range("D" & UltimaFilaEncontrado).Value
TextBox10 = Range("J" & UltimaFilaEncontrado).Value
TextBox17 = Format(Range("a" & UltimaFilaEncontrado).Value, "0000")
'Pongo el numero de coincidencias en base a la fórmula de abajo... como ya valide que esto es si existe .. entro...
cuantos = WorksheetFunction.CountIf(Sheets("hoja1").Range("B:B"), TextBox1)
TextBox9.Value = cuantos
TextBox1.SetFocus
'Unload Me esto lo comento por que quiero segir viendo el formulario .......
'MsgBox " Desea seguir buscando otro registro ? "
Hoja1.Protect "5"
End Sub
Private Sub CommandButton2_Click()
TextBox1 = Empty
TextBox2 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
TextBox8 = Empty
TextBox9 = Empty
TextBox10 = Empty
TextBox17 = Empty
TextBox1.SetFocus
End Sub
Private Sub UserForm_Initialize()
Label13 = Format(Now, "[$-80A]dddd, dd"" de ""mmmm"" de ""yyyy hh:mm:ss am/pm")
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
KeyAscii = 0
MsgBox "Ingrese el codigo del Paciente", vbOKOnly + vbInformation, "AVISO"
End If
End Sub
Ya te lo envíe, es el del formulario medico,,,, el que me ayudaste hace poco a cuadra la fórmula medica , editalo desde alli... y me envias el codigo
Bueno ya te lo envío
Te puedes dar cuenta también, cuando mando a imprimir en la hoja servicios, la cotización,, por que no se borran la celdas correspondientes, que están en el clearcontents...
El código debe estar dentro del botón imprimir
Te paso un ejemplo para que realices la búsqueda
Private Sub CommandButton1_Click() '[Por Adriel Ortiz ' Set h = Sheets("Hoja1") Set r = Columns("A") ' columna a buscar Set b = r.Find(TextBox1, lookat:=xlWhole) 'con el TextBox1 realizo la búsqueda If Not b Is Nothing Then TextBox2.Text = h. Cells(b.Row, "B") ' devuelve los datos a los textbox2.. TextBox3.Text = h. Cells(b.Row, "C") ' devuelve los datos a los textbox3.. TextBox4.Text = h.Cells(b.Row, "D") ' 'aquí para el resto ' Else MsgBox "No existe" End If End Sub
Creo que no me entendiste
Tu macro no aplica
El formulario que tengo implemeentado NO representa problema alguno,,,
El tema es que no encuentra el dato cuando se apertura el form inicial,,,, sino que lo hace cuando se carga el libro de excel, ¿no mientras es oculto,,, ahora si,,?
Ubicas el archivo que te envíe al escritorio, ok
Lo ejecutas (doble clic)
Ingresas el usuario y passw
Se abre el form inicial,, que es el de ingreso de pacientes, ok y el excel se oculta
Estando allí,, pulsas el botón "CONSULTAR PACIENTES" y buscas por numero de cedula
Este por ejemplo = 92516984 q si existe en la base de datos, (hoja1)
Y no aparece,,
PERO
Si abre el excel con un botón q se llama sistema
Y vuelves a ejecutar el formulario ahora si lo encuentra.
vesss
Es decir
En la primera NO LO UBICA pero después de Aperturar el libro y volverlo a ocultar, si lo ubica,,
¿POR QUÉ?
Trata de ingresar nueva información,,, guardas y después te sales, con el botón salir del programa
Vuelves a entrar y veras que no encuentra el dato,,,, es lo que no logro entender
ens serio?
cuando esta seleccionada?? te refieres al fondo amarillo cuando encuentra el dato?? pero eso yo lo quite,,,,
adriel fíjate en la hoja medicamentos,,, como copio los datos antes de imprimirlo pero solo los campos de
Fecha expe,, nombre, cedula edas, y prscirpcion de medicamentos,, he tratado de hacer una macro que me copie los datos hasta allá, pero en línea o fiila,, es decir cada formulación se debe guardar en una fila, y así sucesivamente
Implementé otro código.
Reemplaza este código del botón BUSCAR.
Private Sub CommandButton1_Click() ' '[Por Adriel Ortiz ' Hoja1.Unprotect "5" ' Set h = Sheets("Hoja1") Set r = Columns("B") ' columna a buscar Set b = r.Find(TextBox1, lookat:=xlWhole) 'con el TextBox1 realizo la búsqueda If Not b Is Nothing Then TextBox2.Text = h.Cells(b.Row, "C") ' devuelve los datos a los textbox2.. TextBox4.Text = h.Cells(b.Row, "Q") TextBox5.Text = h.Cells(b.Row, "E") TextBox6.Text = h.Cells(b.Row, "P") TextBox7 = Format(h.Cells(b.Row, "G"), "[$-80A]dddd, dd"" de ""mmmm"" de ""yyyy") TextBox8.Text = h.Cells(b.Row, "D") TextBox10.Text = h.Cells(b.Row, "J") TextBox17.Text = Format(h.Cells(b.Row, "A"), "0000") ' Else MsgBox "No existe el dato" End If ' cuantos = WorksheetFunction.CountIf(h.Range("B:B"), TextBox1) TextBox9 = cuantos Hoja1.Protect "5" End Sub
- Compartir respuesta