Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Name des selektieren Bereichs löschen

Name des selektieren Bereichs löschen
Peter
Guten Abend
Mit untenstehendem Code kann ich den Bereichsnamen des selektierten Bereichs löschen.
Die auskommentierten Zeilen laufen nicht. Damit möchte ich folgendes erreichen.
Ein bestimmter Bereich oder eine Zelle, kann mehr als einen Bereichsnamen enthalten. Mit
Anz = Selection.Offset(0,0).Names.Count möchte ermitteln, wieviele Namen der selektierte Bereich (oder die Zelle) enthält. Falls das Ergebnis null ist, gibt es nichts zu löschen, anderenfalls soll Select Case entsprechend der Anzahl Namen durchlaufen werden.
Zudem liefert mir die MsgBox nur den Bereichs- oder Zellbezug. Ich möchte jedoch in der MsgBox den Namen, der dann gelöscht wird aus Ausgabe erhalten.
Wer kann mir helfen?
Danke und Gruss, Peter
Sub NamenWeg()
Dim Anz As Long, i As Long
'''Anz = Selection.Offset(0, 0).Names.Count
'''if Anz = 0 then GoTo Ende
'''    For i = 1 To Anz
Select Case MsgBox(Selection.Offset(0, 0).Name, vbInformation + vbYesNo)
Case vbYes: Selection.Offset(0, 0).Name.Delete
Case vbNo: GoTo WeiterBeiNein
End Select
WeiterBeiNein:
'''    Next i
Ende:
End Sub

AW: Name des selektieren Bereichs löschen
01.02.2012 21:41:41
Daniel
Hi
ich vermute, daß das so nicht funktioniert.
wahrscheinlich musst du andersrum arbeiten und erstmal eine Schleife über alle Namen machen.
in dieser prüfst du, ob der Zellbereich des Namens mit den gewünschten Zellbereich übereinstimmt und wenn ja, musst du dir diese merken und danach löschen.
desweiteren wäre noch zu klären, wann ein Name relevant ist, dh muss er genau deckungsgleich mit dem Zellbereich sein, oder reicht eine Schnittmenge von einer bestimmten grösse, muss der Name vollständig innerhalb des Zellbereichs liegen, muss der Zellbereich vollständig innerhalb des Namens liegen?
Gruß Daniel
Anzeige
AW: Name des selektieren Bereichs löschen
01.02.2012 22:22:40
Peter
Hallo
So müssen sich eigentlich alle benannten Bereiche, die genau mit dem selektierten Bereich übereinstimmen, abfangen lassen.
Mir ist nicht klar, weshalb das nicht funktioniert.
Hat jemand einen Lösungsansatz?
Gruss, Peter
Sub NamenWegVariante1()
Dim N_M As Name, Anzahl As Long, i As Long
Anzahl = 0
For Each N_M In Names
If N_M.Name = "=" & Selection.Parent.Name & "!" & Selection.Address Then Anzahl = Anzahl +  _
1
Next
If Anzahl = 0 Then GoTo Ende
For i = 1 To Anzahl
Select Case MsgBox(Selection.Offset(0, 0).Name, vbInformation + vbYesNo)
Case vbYes: Selection.Offset(0, 0).Name.Delete
Case vbNo: GoTo Weiter
End Select
Weiter:
Next i
Ende:
End Sub

Anzeige
AW: Name des selektieren Bereichs löschen
01.02.2012 22:42:21
Peter
Hallo
Mit untenstehendem Code werden nun alle benannten Bereiche gelöscht, die genau mit dem selektierten Bereich übereinstimmen..
Das bleibende Problem ist noch, dass mir das Ergebnis des Codes
Selection.Offset(0, 0).Name
den ich mir in der MsgBox anzeigen lasse, nicht den Bereichsnamen, sondern den Bezug gibt.
Wie kann ich mir in der MsgBox den Bezug anzeigen lassen?
Gruss, Peter
Sub NamenWeg()
Dim N_M As Name, Anzahl As Long, i As Long
Anzahl = 0
On Error Resume Next
For Each N_M In ActiveWorkbook.Names
If IsError(N_M) Then GoTo Weiter
If N_M.RefersToRange.Address = Selection.Address Then Anzahl = Anzahl + 1
Next
If Anzahl = 0 Then GoTo Ende
For i = 1 To Anzahl
Select Case MsgBox(Selection.Offset(0, 0).Name, vbInformation + vbYesNo)
Case vbYes: Selection.Offset(0, 0).Name.Delete
Case vbNo: GoTo Weiter
End Select
Weiter:
Next i
Ende:
End Sub

Anzeige
AW: Name des selektieren Bereichs löschen
01.02.2012 22:45:39
Josef

Hallo Peter,
Sub namenLoeschen()
  Dim objName As Name
  Dim rng As Range
  
  For Each objName In ThisWorkbook.Names
    On Error Resume Next
    Set rng = objName.RefersToRange
    On Error GoTo 0
    If Not rng Is Nothing Then
      If Not Intersect(rng, Selection) Is Nothing Then
        If MsgBox("Den Namen '" & objName.Name & "' löschen", _
          vbQuestion + vbYesNo, "Frage") = vbYes Then objName.Delete
      End If
    End If
    Set rng = Nothing
  Next
End Sub



« Gruß Sepp »

Anzeige
AW: Name des selektieren Bereichs löschen
01.02.2012 23:02:57
Peter
Hallo Sepp
Das ist grossartig!
Vielen Dank.
Kleine Anschlussfrage:
Jetzt wird ja auch ein Name berücksichtigt, der innerhalb der Selektion ist, auch wenn er mit der Selektion nicht übereinstimmt.
Wenn nur Namen berücksichtigt werden sollen, die mit der Selektion übereinstimmen, muss sicher
If Not Intersect(rng, Selection) Is Nothing Then
angepasst werden - doch wie?
Gruss, Peter
AW: Name des selektieren Bereichs löschen
01.02.2012 23:06:52
Josef

Hallo Peter,
dann so.
Sub namenLoeschen()
  Dim objName As Name
  Dim rng As Range
  
  For Each objName In ThisWorkbook.Names
    On Error Resume Next
    Set rng = objName.RefersToRange
    On Error GoTo 0
    If Not rng Is Nothing Then
      If Not Intersect(rng, Selection) Is Nothing Then
        If rng.Address = Selection.Address Then
          If MsgBox("Den Namen '" & objName.Name & "' löschen", _
            vbQuestion + vbYesNo, "Frage") = vbYes Then objName.Delete
        End If
      End If
    End If
    Set rng = Nothing
  Next
End Sub



« Gruß Sepp »

Anzeige
AW: Name des selektieren Bereichs löschen
02.02.2012 09:24:58
Peter
Hallo Sepp
In einem "einfachen" Testfile hat das funktioniert. Super. Vielen Dank.
Jetzt bin ich auf folgendes Problem gestossen: In einem grösseren File
kommt die Fehlermeldung "Die Methode Intersect für das Objekt _Global ist fehlgeschlagen (Laufzeitfehler 1004).
Ich habe auf debug gedrückt und dann die aktuellen Variablen im Direktbereich abgefragt:
?objname
=Externe!$F$45:$F$60
?objname.Name
Externe!_FilterDatabase
objname.Name
?rng.Name
=Externe!$F$45:$F$60
?rng.Parent.name
Externe
?selection.name
=Cockpit!$C$31
Hier stört anscheinend der Name "_FilterDatabase". Komisch darin ist, dass dieser gar nicht existiert. Weder in der Tabelle "Externe", noch sonst wo in der Datei.
Wenn ich On Error GoTo 0
auskommentiere, lauft der Code durch. Das ist vielleicht die einfachste Lösung, doch es wurmt mich schon, weshalb ein Name, der gar nicht zu existieren scheint (auch nicht im Namensmanager), solche Probleme verursacht.
Gruss, Peter
Anzeige
AW: Name des selektieren Bereichs löschen
02.02.2012 13:08:09
Josef

Hallo Peter,
dann benötigen wir halt noch eine Abfrage.
Sub namenLoeschen()
  Dim objName As Name
  Dim rng As Range
  
  For Each objName In ThisWorkbook.Names
    On Error Resume Next
    Set rng = objName.RefersToRange
    On Error GoTo 0
    If Not rng Is Nothing Then
      If rng.Parent.Name = Selection.Parent.Name Then
        If Not Intersect(rng, Selection) Is Nothing Then
          If rng.Address = Selection.Address Then
            If MsgBox("Den Namen '" & objName.Name & "' löschen", _
              vbQuestion + vbYesNo, "Frage") = vbYes Then objName.Delete
          End If
        End If
      End If
    End If
    Set rng = Nothing
  Next
End Sub



« Gruß Sepp »

Anzeige
AW: Name des selektieren Bereichs löschen
02.02.2012 14:21:03
Peter
Hallo Sepp
Jetzt läuft es einwandfrei.
Vielen Dank.
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige