Macro buscar

Hola experto, hace pocos dìas me respondiò sobre una macro que busca un valor determinado y al frente sobre esa linea pone un valor, no he encontrado la forma para que evalue si tiene un valor y si lo tiene me muestre un mensaje determinado.
Sub Cancelar()
Sheets("Hoja2").Select
Dim t As String
Dim r As Range
t = InputBox("INGRESE EL NÚMERO DE ORDEN: ")
If Len(t) = 0 Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("A:A"), t) = 0 Then
MsgBox "NO SE ENCONTRO LA ORDEN N° " & t
Sheets("Hoja1").Select
Exit Sub
End If
J = InputBox("DIGITE EL TIPO DE DOCUMENTO CON EL CUAL CANCELÓ")
X = InputBox("DIGITE EL NÚMERO DE DOCUMENTO CON EL CUAL CANCELÓ")
For Each r In Range("A1" & ":" & "A" & Application.WorksheetFunction.CountA(Range("A:A")))
If r = t Then
r.Offset(0, 15) = X
r.Offset(0, 14) = J
r.Offset(0, 13) = Date
End If
DoEvents
Next
Set r = Nothing
Sheets("Hoja1").Select
End Sub

1 Respuesta

Respuesta
1
Prueba esto:
Sub Cancelar()
Sheets("Hoja2").Select
Dim t As String
Dim r As Range
Dim p As Integer
Dim j As Long
Dim x As Long
t = InputBox("INGRESE EL NÚMERO DE ORDEN: ")
If Len(t) = 0 Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("A:A"), t) = 0 Then
MsgBox "NO SE ENCONTRO LA ORDEN N° " & t, vbCritical
Sheets("Hoja1").Select
Exit Sub
End If
j = InputBox("DIGITE EL TIPO DE DOCUMENTO CON EL CUAL CANCELÓ")
x = InputBox("DIGITE EL NÚMERO DE DOCUMENTO CON EL CUAL CANCELÓ")
For Each r In Range("A1" & ":" & "A" & Application.WorksheetFunction.CountA(Range("A:A")))
If r = t Then
If r.Offset(0, 15) <> Empty Then
p = MsgBox("El registro a editar ya cuenta con informacion anterior - Desea sobreescribir el registro ?", vbCritical + vbYesNo, "Atencion")
If p = 6 Then
r.Offset(0, 15) = x
r.Offset(0, 14) = j
r.Offset(0, 13) = Date
Exit For
End If
End If
If p = 7 Then Exit For
r.Offset(0, 15) = x
r.Offset(0, 14) = j
r.Offset(0, 13) = Date
Exit For
End If
DoEvents
Next
Set r = Nothing
Sheets("Hoja1").Select
End Sub
No olvides CERRAR la pregunta
Hola experto, la macro ya no me está copiando los datos en todas las filas que tienen el numero buscado, solo en la primera. Pero en cuanto al mensaje es perfectamente lo que necesito. Saludos y de antemano muchas gracias
Y ahora:
Sub Cancelar1()
Sheets("Hoja2").Select
Dim t As String
Dim r As Range
Dim p As Integer
Dim j As Long
Dim x As Long
t = InputBox("INGRESE EL NÚMERO DE ORDEN: ")
If Len(t) = 0 Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("A:A"), t) = 0 Then
MsgBox "NO SE ENCONTRO LA ORDEN N° " & t, vbCritical
Sheets("Hoja1").Select
Exit Sub
End If
j = InputBox("DIGITE EL TIPO DE DOCUMENTO CON EL CUAL CANCELÓ")
x = InputBox("DIGITE EL NÚMERO DE DOCUMENTO CON EL CUAL CANCELÓ")
For Each r In Range("A1" & ":" & "A" & Application.WorksheetFunction.CountA(Range("A:A")))
If r = t Then
If r.Offset(0, 15) <> Empty Then
p = MsgBox("El registro a editar ya cuenta con informacion anterior - Desea sobreescribir el registro ?", vbCritical + vbYesNo, "Atencion")
If p = 6 Then
r.Offset(0, 15) = x
r.Offset(0, 14) = j
r.Offset(0, 13) = Date
'Exit For
End If
End If
If p = 7 Then GoTo 1
r.Offset(0, 15) = x
r.Offset(0, 14) = j
r.Offset(0, 13) = Date
'Exit For
End If
1:
DoEvents
Next
Set r = Nothing
Sheets("Hoja1").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas