1 votos

¿Puede VBA eliminar rangos con nombre basados en el valor de RefersTo?

Estoy limpiando un libro de Excel hinchado y estoy tratando de eliminar en masa los rangos con nombre que se refieren a los libros de trabajo en la unidad 'C' de alguien. Hay muchos de ellos. Y no se están utilizando en este libro.

' C:\blahblah\...\...\...\...\...\ [WorkBookName.xls]Hoja1'!$E$28

El código siguiente me ayudó a eliminar los rangos con nombre en los que su nombre contiene "icono" (por ejemplo).

Sin embargo, realmente necesito borrar el rango cuando contiene una ruta como se muestra arriba. Teniendo en cuenta que el nombre del Libro de Trabajo o de la Hoja también podría cambiar, pero el impulso sigue siendo el mismo.

Sub deleteNamedRangesSpecific()
For Each NR In ActiveWorkbook.Names
    If NR.NameLocal Like "*" & "icon" & "*" Then NR.delete
Next
End Sub

¿Alguna idea de cómo borrar según el rango en sí, no el nombre del rango?

Gracias.

Mike.

0 votos

If ... Then Range(nr).ClearContents ? O .Delete si desea eliminar las celdas/filas

2voto

tjejojyj Puntos 33

Sólo tienes que pasar el NR.RefersTo a una variable de tipo cadena para que pueda utilizar la variante Like función.

Este código me funciona. Obviamente editar $E$28 para adaptarse.

Option Explicit
Sub deleteNamedRangesSpecific()
    Dim NR As Name
    Dim compare_string As String
    For Each NR In ActiveWorkbook.Names
        compare_string = NR.RefersTo
        If compare_string Like "*" & "$E$28" & "*" Then NR.Delete
    Next
End Sub

0 votos

Buena respuesta, gracias y bienvenido a Superuser

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: