in vba

2017-11-08 1 views
0

Ich habe folgendes Problem:in vba

Ich habe eine dynamische namerange namens TestDym.

Ich versuche, den Namen des Arbeitsblatts, das dieser Namensbereich gehört, durch VBA abrufen.

Ich weiß, dass Sie nur auf eine namerange mit der folgenden Struktur beziehen können:

Range("TestDym") 

Ich kann aber nicht den Blattnamen dieser namerange erhalten.

Ist es möglich?

Grüße

Thanasis

Antwort

2

Wenn Sie den „Umfang“ des Namens Bereich zurückzukehren, können Sie verwenden:

Names("TestDym").Parent.Name 
  • Wenn TestDym eine Arbeitsmappe Ebene Name ist, dann wird das Ergebnis den Namen der Arbeitsmappe zurückkehren .
  • Wenn TestDym ein Arbeitsblatenname ist, gibt das Ergebnis den Arbeitsblattnamen zurück.

enter image description here

enter image description here

enter image description here

+0

Kudos für das Durchgehen der Weg-nicht ausgelasteten 'Names'-Sammlung, die der * richtige Weg ist, dies zu tun und am Ende mit explizitem Code zu enden, der liest, als würde er auf einen definierten Namen zugreifen. –

+0

Danke! Ich habe nur Namen eingegeben ("TestDym"). Eltern und nicht Namen ("TestDym"). Parent.Name. – Thanasis

2
Range("TestDym").Worksheet.Name 
+1

Ein Grund .worksheet verwenden Sie Intellisense Auto-Vervollständigen für .name – Rosetta

1

Dies gibt Ihnen den Namen des Blattes Ihr Bereich eingeschaltet ist.

Range("TestDym").Parent.Name 
+0

einen besonderen Grund haben werden für nicht mit .Worksheet, @braX? – Excelosaurus

+0

Entweder wird funktionieren. Was Sie über VBA herausfinden werden, ist, dass es viele verschiedene Möglichkeiten gibt, dasselbe zu tun. – braX