Macro, oculta filas, mediante aplicación externa Excel

El detalle es que los datos que estoy leyendo están siendo extraídos de una aplicación externa a Excel llamada Delta Ad in, en donde se traen datos en tiempo real de un sistema que esta colectando datos.
He tratado de realizar el macro por medio del código:
Sub Macro3()
'
If Range("a15:a38").Value = "#N/A" Then
Rows("40:255").EntireRow.Hidden = True
Else
Rows("40:255").EntireRow.Hidden = False
'
'
End Sub
Pero al compilar me aparece un error diciéndome que " se ha producido el error 13 en tiempo de ejecucución, no coinciden los tipos. Supongo que es por la herramienta externa que trae los datos antes descrita.
Excel 2007

1 Respuesta

Respuesta
1
Se produce el error por que con este comando Range("a15:a38"). Value, tratas de ver el valor de un rango. Te recomiendo que lo hagas por separado y no en rango. Si necesitas borrar todos los registros #N/A. Te recomiendo hacer esto :
Cells.Select
    Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Que tal Pitcher, antes que nada muchas gracias por responder a mi pregunta, y en efecto, el objetivo es ocultar las filas que tienen "#N/A". Al introducir el cogido que me proporcinaste nada más selecciona todas las celdas (no me desaparece los "#N/A"), me imagino que es porque me estoy trayendo los datos desde una base de datos SQL, pero si escribo el texto "#N/A" en una celda con formato de texto si los desaparece. Esta es la fórmula con la que me estoy trayedo los datos de la base SQL (es una aplicación externa a Excel).
=DvCHInterpolated("localhost", "DeltaV=ESTACION1 ANALOG_1/PARAM1.CV", FALSO, "Timestamp", "Local", $C$9, $M$9, "1hours")
Entonces el problema me imagino que es que no puede leer la macro los datos porque no los ve como texto.
Saludos.
Espero tus comentarios
Podríamos hacer esta, la cual selecciona todo y le quita la fórmula, busca los que tienen errores y los reemplaza por vacío:
Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
O podemos ocupar esta, la cual los repasa y pregunta si la fórmula tiene error y si los tiene la celda queda en blanco o vacío :
Dim Celda As Range
    For Each Celda In ActiveSheet.Range("A15:A38")
    If IsError(Celda.Value) Then
            errval = Celda.Value
                Select Case errval
                    Case CVErr(xlErrDiv0)
                        'MsgBox ("#Div/0! error")
                        Celda.Value = Null
                    Case CVErr(xlErrNA)
                        'MsgBox ("#N/A error")
                        Celda.Value = Null
                    Case CVErr(xlErrName)
                        'MsgBox ("#Name? error")
                        Celda.Value = Null
                    Case CVErr(xlErrNull)
                        'MsgBox ("#NULL error")
                        Celda.Value = Null
                    Case CVErr(xlErrNum)
                        'MsgBox ("#NUM error")
                        Celda.Value = Null
                    Case CVErr(xlErrRef)
                        'MsgBox ("#REF! error")
                        Celda.Value = Null
                    Case CVErr(xlErrValue)
                        'MsgBox ("#VALUE! error")
                        Celda.Value = Null
                End Select
        End If
    Next Celda
Espero que sea de tu ayuda. Cualquier consulta no dudes en preguntar.
Suerte
Pitcher !

A y no olvides cerrar la pregunta si la respuesta fue de tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas