Bloque whit no definido vba

Todos cómo están, tengo una pregunta y espero me puedan guiar.

(Disculpen si el tema es muy largo)

Tengo una tabla de datos en donde en la columna (X) tengo unos valores (Pendiente o Finalizado), esta tabla funciona de bitácora en donde están asociados seguimientos o registros de un mismo evento, en otra hoja llevo un formulario donde ingreso los datos que son copiados a esa tabla y actualizo los eventos, según los datos o seguimientos del formulario, en la columna (X) el valor de pendiente pasa a ser finalizado, para eso realicé una grabación de macro en donde por filtros busco la fila del seguimiento y cambio el valor de (X) de Pendiente a Finalizado, la macro en ocasiones funciona bien, pero aveces lanza el error 91 bloque whit no definido, según entiendo, este error pasa cuando el macro no encuentra la palabra pendiente, (que realmente si en esta).

Esta es la tabla en cuestión, faltan más columnas, en la columna A esta un numero de orden, es un numero "unico", en esa fila esta la información del evento, el macro que realicé por grabación, busca en la columna A el numero de orden (el resultado solamente se mostrará una fila), luego busca la palabra Pendiente y la cambia a finalizado, luego borra el filtro para volver a mostrar todos los datos.

Este es el vba del macro:

ActiveSheet.ListObjects("BITACORA").Range.AutoFilter Field:=1, Criteria1:=Sheets("BITACORA").Range("C9")
Cells.Find(What:="PENDIENTE", After:=ActiveCell, SearchOrder:=xlByColumns).Activate
ActiveCell.Replace What:="PENDIENTE", Replacement:="FINALIZADO", SearchOrder:=xlByColumns
ActiveSheet.ListObjects("BITACORA").Range.AutoFilter Field:=1

Bitácora es el nombre de la tabla

Ahora bien, hay alguna otra forma de buscar un valor (pendiente) y cambiarlo por otro (Finalizado), tomando en cuenta que en la tabla van a estar múltiples valores con la palabra pendiente, fue por eso que añadí un numero de orden único para al momento de el dato de la fila a cambiar se encontrara de manera más fácil.

El tema es un poco largo.

1 Respuesta

Respuesta
2

Tengo que revisar toda la macro y ver cómo tienes tus datos en las hojas. Envíame tu archivo para actualizar tu macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Andres zu

Te explico un poco, en la hoja Bitácora esta en formulario donde se ingresan los datos y demás información, el botón de guardar, crea un nuevo registro con numero de orden o de ser el caso actualiza un seguimiento anterior con el numero de orden asociado a ese seguimiento, la fecha del reporte se pone automáticamente por vba, en la parte de numero de orden si se pone el numero de orden de un caso se toma como seguimiento, si se deja en blanco se toma cómo un nueva entrada y por vba se agrega el numero de orden, no soy experto en macros a sí que vas a ver muchos códigos no optimizados, estoy a la orden, gracias.

Te anexo el código actualizado:

Sub SEGUIMIENTO_1()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    MsgBox "Se va a actualizar el seguimiento " & (Range("C9")) & " del ATM " & (Range("B1")), vbInformation, "Logística de ATM's"
    Set h1 = Sheets("BITACORA")
    Set h2 = Sheets("REGISTRO")
    If h2.AutoFilterMode Then h2.AutoFilterMode = False
    '
    Set b = h2.Columns("A").Find(h1.Range("C9"), lookat:=xlWhole)
    If Not b Is Nothing Then
        'si encontró el número de orden
        If h2.Cells(b.Row, "J") = "PENDIENTE" Then
            h2.Cells(b.Row, "J") = "FINALIZADO"
            MsgBox "Registro actualizado"
        Else
            MsgBox "El estatus no está en Pendiente, actualmente tiene: " & h2.Cells(b.Row, "J")
        End If
    Else
        MsgBox "El número de orden no existe"
    End If
End Sub

El error se produce cuando buscas con esta instrucción:

Cells.Find(What:="PENDIENTE", After:=ActiveCell, SearchOrder:=xlByColumns).Activate

Pero no encuentra la palabra "PENDIENTE", la macro quiere activar la celda encontrada, pero como no la encontró por eso envía el error. Esto se puede evaluar estableciendo en una variable la búsqueda, si la variable está vacía entonces no encontró, si la variable contiene datos entonces encontró el dato y puedes obtener el dato de la celda.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas