2016-04-11 4 views
0

Mit dem Ausführen von VBA-Code konnte ich erkennen, dass das Anwenden eines Filters in einem Blatt einen Bereichsnamen erstellt, der NICHT im Namenmanager angezeigt wird (der Bereichsname wird entweder nur den Kopfzeilen oder der gesamten Tabelle zugeordnet). . Gibt es eine Möglichkeit zu wissen, warum dies geschieht und/oder eine Möglichkeit, dies zu verhindern? Ist es nur ein Excel-Fehler?Bereichsnamen nicht im Namenmanager

der Teil des VBA-Code, der den Fehler verursacht habe ich versucht war, laufen die folgenden:

For Each Rng In ActiveWorkbook.Names 
    Set Rng2 = Range(Rng) 
    If Not Intersect(Rng2, Range(rng1.Offset(1, 0), rng1.End(xlDown)).EntireRow) Is Nothing Then ActiveWorkbook.Names(Rng.Name).Delete 
Next Rng 

Als ich das Debuggen war, bemerkte ich, dass meine RNG (das ist ein Name-Objekt ist, übrigens) verweist auf einen Bereich, den ich nie erstellt habe (und ich weiß das, weil das Blatt, in dem es ist, keine anderen Bereichsnamen hat und ich nie irgendwelche hinzufügte) Ich habe diesen VBA-Code verwendet, um zu überprüfen, dass der Name in diesem Blatt existiert:

Sub test() 

Dim Rng As Name 

For Each Rng In Sheets("WindHail Zone 2").Names 
    'ActiveWorkbook.Names(Rng.Name).Delete 
    MsgBox Rng 
Next Rng 

End Sub 

Ich entfernte den Kommentarblock aus der ersten Zeile o f for die Schleife zur zweiten Zeile, um sie zu löschen. Ich habe den Filter auf dieser Registerkarte entfernt und rufe ihn an, nur um zum selben Problem zu kommen.

Danke!

+2

versuchen Das ... Nur nicht geschieht. Irgendwie können wir das reproduzieren? Welche Art von Filter? Welcher VBA-Code? Einige weitere Informationen sind erforderlich. – vacip

+1

Bitte bearbeiten Sie Ihren Beitrag, um weitere Details hinzuzufügen: einschließlich Code-Schnipsel, was Sie bisher versucht haben usw. –

Antwort

1

mir nicht so klar, was your're Namen und Reichweite Kreuzung aber solange „versteckt“ zu erreichen, versuchen Sie Konto beteiligt sind, müssen nehmen in dem, was folgt:

  • Filterung versteckt „Namen nicht erstellen "

    aber alle von ihnen endet mit der Zeichenfolge‚_FilterDatenbank‘

  • Bereich Schnitt Wold einen Fehler zurück, wenn auf Bereiche angewandt nicht auf dem gleichen Blatt gehör

  • 0.123.

so hier, was Sie sollten

For Each Rng In ActiveWorkbook.Names 
    Set rng2 = Range(Rng) 
    If rng2.Parent.Name = rng1.Parent.Name And InStr(Rng.Name, "_FilterDatabase") = 0 Then 'the first check is for ranges belonging to the same worksheet and the second is for rng2 not deriving from any filtering 
     ' now you can safely "Intersect" 
     If Not Intersect(rng2, Range(rng1.Offset(1, 0), rng1.End(xlDown)).EntireRow) Is Nothing Then ActiveWorkbook.Names(Rng.Name).Delete 
    End If 
Next Rng 
+0

Vielen Dank! – daniel

+0

du bist willkommen daniel – user3598756