Foros del Web » Soporte técnico » Ofimática »

Macro que busque un valor e indique si este no existe

Estas en el tema de Macro que busque un valor e indique si este no existe en el foro de Ofimática en Foros del Web. poco para que realizara lo que necesito, lo que dicha macro hace es buscar valores en la hoja de trabajo y cuando los encuentra rellen ...
  #1 (permalink)  
Antiguo 14/02/2012, 17:37
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Macro que busque un valor e indique si este no existe

poco para que realizara lo que necesito, lo que dicha macro hace es buscar valores en la hoja de trabajo y cuando los encuentra rellen la celda, pero cuando ingresa un valor que no existe en la hoja me da un error 91 y se detiene la macro, lo que me gustaria es que en vez de salir de la macro me de un mensaje indicando que el valor no existe y continue la ejecucion de la macro, no se si esto sea posible, espero y agradezco su ayuda.

Agrego el codigo con el que estoy trabajando:

Sub BuscaResalta()
'
' BuscaResalta Macro
'

Dim valor As String, celda1 As String, celda2 As String
Dim inicio As String, largo1 As String, celda3 As String



celda3 = 1
Do Until celda3 = [R1]
valor = InputBox("Ingrese Numero de Inventario: ")
largo1 = Len(valor)
Cells.Find(What:=valor, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
' If valor Is Nothing Then MsgBox ("Numero no registrado") Else valor Activate
If valor = "" Then Exit Sub

Application.ScreenUpdating = True


celda1 = ActiveCell.Address
celda2 = 0

Do While celda2 <> celda1
inicio = InStr(ActiveCell, valor)
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With

Cells.FindNext(After:=ActiveCell).Activate
celda2 = ActiveCell.Address
Loop
Loop

End Sub

Espero que me puedan ayudar, gracias.!!!!

Marco
  #2 (permalink)  
Antiguo 15/02/2012, 06:12
Avatar de rid501  
Fecha de Ingreso: agosto-2011
Mensajes: 244
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Macro que busque un valor e indique si este no existe

Añade justo antes del IF la sentencia On Error GoTo Inexistente y tras el final de la condicion la sentencia On Error GoTo 0 . Al final de la subrutina, justo antes del End Sub, añade el código:
Inexistente:
MsgBox "El valor no existe"


Por supuesto puedes mejorar el código que se ejecuta tras la etiqueta Inexistente:, por ejemplo que el mensaje muestra que valor es el que no encuenta y que en la celda coloque un 0 o el valor que a ti te interese
__________________
Nunca discutas con un imbécil: te verás obligado a descender a su nivel y entonces, con su experiencia, te derrotará. (Mosca Verde)

Última edición por rid501; 15/02/2012 a las 06:14 Razón: correción
  #3 (permalink)  
Antiguo 17/02/2012, 17:29
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Macro que busque un valor e indique si este no existe

Hola, disculpa mi ignorancia pero como pongo la condicion On Error, intente ponerla en lugar del If que tengo marcado como comentario, es decir arriba de If valor = "" Then exit sub
y solo la primera parte del On Error GoTo Inexistente y la parte de Inexistente: MsgBox, al hacer esto ya me muestra la ventana de mensaje, pero todos los numeros que ingreso, aunque estos si existan, solo necesito que me de el mensaje, no que guarde algun valor, es para un sistema de control de inventarios, por lo tanto solo necesito confirmar los numeros de inventario y que me diga cuando alguno no este registrado, muchas gracias por la ayuda.
  #4 (permalink)  
Antiguo 18/02/2012, 09:50
Avatar de rid501  
Fecha de Ingreso: agosto-2011
Mensajes: 244
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Macro que busque un valor e indique si este no existe

Tu código modificado para que haga lo que quieres. Busca el valor introducido en la primera columna de la hoja de cáculo y marca todas aquellas celdas cuyo valor sea coincidente. Si no lo encuentra te lo dice antes de seguir pidiendo un nuevo valor.

Código:
Sub BuscaResalta()
'
' BuscaResalta Macro
'

Dim valor As String, celda1 As String, celda2 As String
Dim inicio As String, largo1 As String, celda3 As String



celda3 = 1
Do Until celda3 = [R1]
    valor = InputBox("Ingrese Numero de Inventario: ")
    If valor = "" Then Exit Sub
    largo1 = Len(valor)
    Encontrado = "N"
    I = 1
    Do While Cells(I, 1) <> Empty
        If valor = Cells(I, 1) Then
            Encontrado = "S"
            Cells(I, 1).Interior.ColorIndex = 3
            Cells(I, 1).Interior.Pattern = xlSolid
        End If
         I = I + 1
    Loop
    If Encontrado = "N" Then
        MsgBox " El valor " & valor & " no existe"
    End If
Loop
End Sub
__________________
Nunca discutas con un imbécil: te verás obligado a descender a su nivel y entonces, con su experiencia, te derrotará. (Mosca Verde)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:03.