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

Respuesta
1

[Hola 

Muestra la macro

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

Que tal si me envías tu archivo y lo adecuo la nueva macro

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

No lo encuentro tu archivo

O te preparo un ejemplo un toke

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

usuario : cretorno

pass. rm272

me confirmas si te llego el archivo

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,,?

¿La identificación lo buscar por historia o cédula?

mira a ver te explico

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É?

Ah es que tu código busca cuando la hoja esta seleccionada

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,,,,

¿Entonces qué le quito al código?

Lo actualizo y te paso la macro un toke

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas