Avatar billede gider_ikke_mere Nybegynder
12. august 2005 - 15:30 Der er 3 kommentarer og
1 løsning

Problemer med sletning af cellenavne

Jeg har en del rækker som jeg via en makro engang imellem sletter. Nogle af cellerne eller celleområderne har cellenavne som jeg har oprettet. Disse bliver ikke slettet og refererer dermed alle til "PROJEKT!#REFERENCE!"

Jeg prøver at slette navnene med en makro der bruger ActiveWorkbook.Names(N).Delete

Problemet er at kun nogle af navnene bliver slettet ved første gennemløb.
Efter en 4-5 gennemløb er alle navne med ukorrekt reference slettet.

OBS!!! Alle ugyldige navne BLIVER kværnet igennem koden "ActiveWorkbook.Names(N).Delete" ved hvert eneste gennemløb. Navnene står der bare stadigvæk med samme fejlreference.
Avatar billede jkrons Professor
12. august 2005 - 15:34 #1
Denne burde slette alle nanve i din mappe:

Sub SletNavne()
    For Each n In ActiveWorkbook.Names
        n.Delete
    Next n
End Sub
Avatar billede gider_ikke_mere Nybegynder
15. august 2005 - 08:26 #2
Nu er problemet at jeg kun skal have slettet de navne som er indenfor det slettede område. Derfor havde jeg i min kode prøvet at springe til hver navneområde, og hvis der var fejl på den handling, slette det pågældende område.
Avatar billede gider_ikke_mere Nybegynder
15. august 2005 - 12:01 #3
Denne kode ser ud til at klare jobbet:

Sub DeleteBrokenNames()
    Dim Nme As Name

    For Each Nme In ActiveWorkbook.Names
        If Right(Nme.RefersTo, 5) = "#REF!" And Left(Nme.RefersTo, 12)"=Projektdata" Then
            Nme.Delete
        End If
    Next Nme

End Sub
Avatar billede gider_ikke_mere Nybegynder
18. august 2005 - 12:25 #4
Eller endnu bedre. Tager højde for at cellerne ikke nødvendigvis hænger sammen.

http://www.microsoft.com/office/community/da-dk/default.mspx?query=akyhne&dg=&cat=en-us-office&lang=en&cr=US&pt=3a4e9862-cdce-4bdc-8664-91038e3eb1e9&catlist=&dglist=&ptlist=&exp=&sloc=da-dk

Sub DelNames()
Dim n As Long
Dim nm As Name
Dim vArr()
n = 1
For Each nm In ActiveWorkbook.Names
    If InStr(nm.RefersTo, "#REF!") Then
        n = n + 1
        ReDim Preserve vArr(1 To n)
        vArr(n) = nm.Name
        nm.Delete
    End If
Next
If n > 1 Then
    vArr(1) = "Names deleted"
    ActiveWorkbook.Worksheets.Add
    Range("A1").Resize(n, 1).Value = Application.Transpose(vArr)
    MsgBox "Find & rectify these names if used in formulas"
Else
    MsgBox "No names deleted"
End If

End Sub

Sub Test()
With ActiveWorkbook
    For i = 1 To 4
        .Names.Add "myNameACE_" & i, Union([a1], [c1], [e1])
        .Names.Add "myNameAE_" & i, Union([a1], [e1])
        .Names.Add "myNameAC_" & i, Union([a1], [c1])
    Next
    Columns("C:C").Delete
End With

' DelNames
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester