Macro que busque y seleccione (sin filtro)

En esta oportunidad les quito un tiempito para hacerles una consulta en cuanto una macro que busque y seleccione la celda encontrada, si no existe me de un MsgBox y si la celda de búsqueda está en blanco que también me lo diga.

Tengo este Macro:

Cells.Find(What:=Range("A1").select, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate

Está asignado a un botón. Una vez que se coloca el valor buscado en la celda A1 se hace clic en el botón y si el valor existe selecciona la celda que lo contiene, sino no hace nada.

1 Respuesta

Respuesta
1

Puedes poner

$$\begin{align}&\\ &If ActiveCell <> Empty Then\\ &MsgBox ("El dato no existe"), vbInformation\\ &\\ &\\ &\end{align}$$

En www.programarexcel.blogspot.com hay una serie de ejemplos que puedes ver y adaptar a lo que estás haciendo.

No comprendo tu respuesta.

Tengo este código:

Cells.Find(What:=Range("A1").select, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate

Dónde coloco el que sugieres?

Ese código solo pegado entre

sub xx()

Cells.Find(What:=Range("A1").select, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate

end sub

Seguro te da error por eso debe ser parte de otro código ya que tu dices que puedes encontrar el dato y posicionar en el según lo que explicas lo que necesitas es que te salga un msgbox bueno después que te posiciones pones el código que te pasa y si la celda activa no es vacía te va a salir el msgbox, ¿eso es lo que necesitas?.

Claro, fijate:

Este código te dice que al oprimir el botón (asignado al Macro) buscará el número introducido en la celda A1.

Cells.Find(What:=Range("A1").select, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate

Necesito que cuando se oprima el botón y no exista ningún valor en la Celda A1, por medio de un MsgBox, me diga que la celda está vacía y en caso de que el valor no exista, un MsgBox que diga Valor no encontrado.

Perfecto vamos por parte, entonces para que te verifique si hay un valor en a1 y en caso contrario te salga msg box, debes poner al principio de tu macro

sub busca ()

Dim c As Object

If Sheets("hoja1").Cells(1, 1) = Empty Then

MsgBox ("Se requiere que ingrese un valor en A1"), vbCritical, "AVISO"

Exit Sub

End If

Set c = Sheets("Hoja1").Range("A2: A1048576").Find(dato, LookIn:=xlValues, Lookat:=xlWhole)

If c Is Nothing Then

MsgBox ("El dato no existe"), vbCritical, "AVISO"

End If
End Sub

Con este código busca el dato a1 en la columna a partiendo de a2 y te da el msg si no está el dato.

Amigo, algo pasa que no funciona. Cuando está la celda vacía si me da el mensaje, pero al introducir los valores en A1 no los busca ni dice que no existe.

Gracias por tu tiempo

Antes de escribir la respuesta me fije que funcionar y funciona, lo acabo de revisar de nuevo y funciona, prueba borrando un dato que sabes que existe para que no lo encuentre en la columna a y fijate que te sale el msg box donde dice que no encontró dato, te fijaste en el nombre de la hoja, deberías adaptarla, si te sigue sin funcionar sube el archivo en www.programarexcel.blogspot.com por favor fijate que la macro dice que busca a1 desde a2 hasta el final de las celdas de la hoja1, cambia por tu nombre de hoja.

Será la versión? tengo office 2010. Aunque me interesaría que corriera en todas las versiones.

No me funciona. Y lo estoy probando en un libro nuevo.

Mándeme tu libro a ver: [email protected]

gracias de nuevo

No la versión con la que trabajo es 2010, haz una cosa enviame el libro y lo miro, también prueba abrir el editor y apretá f8 para ejecutar la macro sentencia por sentencia para ver donde no funciona como tu quieres. Te digo el libro donde lo probé no tiene mucha ciencia en la columna a puse números variados hasta la fila 15 en la fila a el número 1 por ejemplo puse a correr la macro y como estaba el número no me salio el mensaje de que no está, luego lo borre y cambie por otro y ahora me salia el mensaje que no estaba dicho numero, conclusión la macro funciona bien hace lo que tu dices en tu enunciado que necesitabas, puede que tengas otro código en tu libro que esta haciendo lo contrario y por eso no funcione para ver esopasame toda la codificación que tiene o mejor enviame el libro y te lo veo en un ratito.

Quizás estoy haciendo algo errado:

1.-Inserté un módulo

2.-Copié el siguiente código:

Sub busca()
Dim c As Object
If Sheets("Hoja1").Cells(1, 1) = Empty Then
MsgBox ("Se requiere que ingrese un valor en A1"), vbCritical, "AVISO"
Exit Sub
End If
Set c = Sheets("Hoja1").Range("A2: A1048576").Find(dato, LookIn:=xlValues, Lookat:=xlWhole)
If c Is Nothing Then
MsgBox ("El dato no existe"), vbCritical, "AVISO"
End If
End Sub

------

Estoy muy interesado en que funcione.

Gracias de nuevo

¿Debes cambiar hoja1 por nombre detu hoja . esta macro busca encola a dpnde estantus datos?

Te envié un libro al correo de www.programarexcel.blogspot.com

Gracias

Dos cosas agrega que es lo que estas buscando en este caso la variable dato que está en A2

Y segundo tu debes trabajar con excel 2003 que tiene 65536 filas por ende cambia 1048576 por 65536 filas de esa forma al agregar en dato en la columna a1 busca el dato en toda la columnna A empezando por A2 en caso de no encontrarlo sale el msb box que el dato no existe.

dato = Sheets("hoja1").Range("A1")

Set c = Sheets("hoja1").Range("A2: A65536").Find(dato, LookIn:=xlValues, Lookat:=xlWhole)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas