Buscar datos en hojas (Datos que se repiten)
Buen día nefese, tengo un problemita ayúdenme por favor, poco manejo de Excel; Estoy utilizando el siguiente código para para buscar datos en varias hojas:
Private Sub Button_Buscar_Click()
Dim id_documento, idBusca As String, sino As String
Dim fila As Integer
marca = 0
ind = 0
For Each sh In Sheets
sh.Select
fila = 5
id_documento = TextBox8
Do While idBusca <> id_documento
fila = fila + 1
idBusca = Range("E" & fila).Value
If idBusca = Empty Then
'MsgBox "No se encuentra ese No. De Documento"
marca = 1
Exit Do
End If
Loop
If marca = 0 Then
sino = MsgBox("El dato fue encontrado en hoja " & sh.Name & Chr(10) & _
"¿Deseas aceptar? Por Si se muestra el registro, por NO se busca en otra hoja", vbYesNo, "CONFIRMAR")
If sino = vbYes Then
TextBox1 = Range("B" & fila).Value
TextBox2 = Range("C" & fila).Value
TextBox3 = Range("D" & fila).Value
TextBox4 = Range("F" & fila).Value
TextBox5 = Range("H" & fila).Value
TextBox6 = Range("L" & fila).Value
TextBox7 = Range("J" & fila).Value
TextBox8.SetFocus
ind = 1
Exit Sub
End If
End If
marca = 0
Next sh
If ind = Empty Then
MsgBox "No Existe este Número de Orden"
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
marca = 1
End If
End Sub
La verdad si funciono pero tiene algunas inconsitencias al momento de ejecutarlo, son las siguientes:
Hago una prueba: Yo se que existe el No. Documento (10-100) tanto en la Hoja1=2008 como en la Hoja4=2011.
1). Con respecto a lo anterior, el comienza a buscar inicialmente desde la primera hoja en este caso es la hoja1=2008, si la encuentra le digo que SI y el me arroja el registro perfectamente, osea me arroja los datos que se encuentran en las celdas y me las manda al textbox, pero como estoy haciendo una prueba se que existe otro y le digo que NO... Pero me comienza a buscar en la hoja2=2009, luego se va a la hoja3=2010 diciéndome en cada una de ellas "Que el dato fue encontrado..."¿Deseas aceptar? Por Si se muestra el registro, por NO se busca en otra hoja", vbYesNo..", ¿?... Luego cuando llega a la Hoja4=2011 le digo que (SI) que me muestre el registro pero lo que hace es enviarme los mismo datos del Textbox más no los datos que están en las celdas, osea no hace la operación como la hace en la primera encontrada.
2). Existe alguna forma de que el código automáticamente identifique si existe iguales números de contratos o documentos a buscar, con el fin de que no me pregunte cuando Yo se que ese Numero de documento solo esta 1vez y solo me haga la pregunta cuando el se de cuenta por medio de un código que existe dos o más Numero iguales en diferentes hojas.
Quedo pendiente de la respuesta.. MUCHAS GRACIAS!
Private Sub Button_Buscar_Click()
Dim id_documento, idBusca As String, sino As String
Dim fila As Integer
marca = 0
ind = 0
For Each sh In Sheets
sh.Select
fila = 5
id_documento = TextBox8
Do While idBusca <> id_documento
fila = fila + 1
idBusca = Range("E" & fila).Value
If idBusca = Empty Then
'MsgBox "No se encuentra ese No. De Documento"
marca = 1
Exit Do
End If
Loop
If marca = 0 Then
sino = MsgBox("El dato fue encontrado en hoja " & sh.Name & Chr(10) & _
"¿Deseas aceptar? Por Si se muestra el registro, por NO se busca en otra hoja", vbYesNo, "CONFIRMAR")
If sino = vbYes Then
TextBox1 = Range("B" & fila).Value
TextBox2 = Range("C" & fila).Value
TextBox3 = Range("D" & fila).Value
TextBox4 = Range("F" & fila).Value
TextBox5 = Range("H" & fila).Value
TextBox6 = Range("L" & fila).Value
TextBox7 = Range("J" & fila).Value
TextBox8.SetFocus
ind = 1
Exit Sub
End If
End If
marca = 0
Next sh
If ind = Empty Then
MsgBox "No Existe este Número de Orden"
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
marca = 1
End If
End Sub
La verdad si funciono pero tiene algunas inconsitencias al momento de ejecutarlo, son las siguientes:
Hago una prueba: Yo se que existe el No. Documento (10-100) tanto en la Hoja1=2008 como en la Hoja4=2011.
1). Con respecto a lo anterior, el comienza a buscar inicialmente desde la primera hoja en este caso es la hoja1=2008, si la encuentra le digo que SI y el me arroja el registro perfectamente, osea me arroja los datos que se encuentran en las celdas y me las manda al textbox, pero como estoy haciendo una prueba se que existe otro y le digo que NO... Pero me comienza a buscar en la hoja2=2009, luego se va a la hoja3=2010 diciéndome en cada una de ellas "Que el dato fue encontrado..."¿Deseas aceptar? Por Si se muestra el registro, por NO se busca en otra hoja", vbYesNo..", ¿?... Luego cuando llega a la Hoja4=2011 le digo que (SI) que me muestre el registro pero lo que hace es enviarme los mismo datos del Textbox más no los datos que están en las celdas, osea no hace la operación como la hace en la primera encontrada.
2). Existe alguna forma de que el código automáticamente identifique si existe iguales números de contratos o documentos a buscar, con el fin de que no me pregunte cuando Yo se que ese Numero de documento solo esta 1vez y solo me haga la pregunta cuando el se de cuenta por medio de un código que existe dos o más Numero iguales en diferentes hojas.
Quedo pendiente de la respuesta.. MUCHAS GRACIAS!
Respuesta de Nelson Felipe Serrano
1