Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Bezüge auf Namen in anderen Mappen aufheben

Gruppe

Name

Problem

Wie kann ich mir Namensverknüpfungen auf anderen Arbeitsmappen anzeigen lassen und diese auf Wunsch löschen?

Lösung
Geben Sie den nachfolgenden Code in ein Standardmodul ein und weisen Sie ihn einer Schaltfläche zu.

StandardModule: basMain

Sub DeleteLinkNames()
   Dim nmeLink As Object
   Dim intCounter As Integer, intStart As Integer
   Dim strMsg As String, strBook As String, strWks As String
   Dim strRng As String
   Dim bln As Boolean
   bln = True
   For Each nmeLink In ActiveWorkbook.Names
      If InStr(nmeLink.RefersTo, "[") > 0 Then
         bln = False
         intCounter = InStr(nmeLink.RefersTo, "[") + 1
         intStart = InStr(nmeLink.RefersTo, "]") - 1
         strBook = Mid(nmeLink.RefersTo, intCounter, intStart - intCounter + 1)
         intCounter = InStr(nmeLink.RefersTo, "!")
         strWks = Mid(nmeLink.RefersTo, intStart + 2, intCounter - intStart - 2)
         If Right(strWks, 1) = "'" Then
            strWks = Left(strWks, Len(strWks) - 1)
         End If
         strRng = Mid(nmeLink.RefersTo, intCounter + 1, Len(nmeLink.RefersTo))
         strMsg = "Name: " & UCase(nmeLink.Name) & Chr(13) & _
            "Arbeitsmappe: " & UCase(strBook) & Chr(13) & _
            "Tabellenblatt: " & UCase(strWks) & Chr(13) & _
            "Bezug: " & strRng & Chr(13) & Chr(13) & _
            "Name löschen?"
         If MsgBox(strMsg, 292) = vbYes Then
             nmeLink.Delete
         End If
      End If
   Next nmeLink
   If bln = True Then
       MsgBox "Keine Namen gefunden, die auf eine" & Chr(13) & _
           "andere Arbeitsmappe verweisen!"
   End If
End Sub