Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

Abfragen, in welchem Sheet benannter Range ist

Abfragen, in welchem Sheet benannter Range ist
24.06.2013 16:51:46
Peter
Guten Tag
Der definierte Bereich
ZeFix bezieht sich auf
='0502'!$A$3:$M$3;'0502'!$P$3:$X$3;'0502'!$AF$3;'0502'!$AH$3;'0502'!$AJ$3;'0502'!$AR$3;'0502'!$AT$3;'0502'!$DE$3;'0502'!$DG$3;'0502'!$DI$3;'0502'!$DK$3;'0502'!$DM$3;'0502'!$DO$3;'0502'!$DQ$3;'0502'!$DS$3;'0502'!$DU$3;'0502'!$DY$3;'0502'!$EX$3:$EY$3;'0502'!$FJ$3:$FT$3;'0502'!$FY$3
=bereichsspastr("zeFix";Heute())
Function BereichsSpaStr(Name As String, Dummy As Date) As String  'temptemp
Dim rngName As Range
Set rngName = Range(Name)
BereichsSpaStr = rngName.EntireColumn.Address(0, 0)
End Function
liefert mir
A:M,P:X,AF:AF,AH:AH,AJ:AJ,AR:AR,AT:AT,DE:DE,DG:DG,DI:DI,DK:DK,DM:DM,DO:DO,DQ:DQ,DS:DS,DU:DU,DY:DY,EX:EY,FJ:FT,FY:FY
Sobald ich jedoch in eine andere Arbeitsmappe wechsle und dort ein Eintrag vornehme, liefert die gleiche Funktion in der deaktivierten Arbeitsmappe als Ergegnis #WERT!
Das Problem entsteht dadurch, , dass ich dem Range rngName nur Range(Name) übergebe, jedoch nicht ThisWorkbook.Sheets("0502").Range(Name)
zeFix bezieht sich nicht immer auf die Tabelle "0502".
Wie kann ich aus dem definierten Bereich "zeFix" abfragen, in welcher Tabelle dieser Name definiert ist? Dann kann ich eine eindeutige Definition von rngName vornehmen.
Danke und Gruss, Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Offensichtl soll es sich tatsächl um einen ...
24.06.2013 20:12:12
Luc:-?
…für ein TabBlatt definierten Namen handeln, Peter;
da bleibt dir nichts weiter übrig, als alle Blätter durchzugehen:
Function BereichsSpaStr(BName As String, Dummy As Date) 'As String*  temptemp
Dim rngName As Range, Wsh As Worksheet
On Error Resume Next
For Each Wsh In ActiveWorkbook.Sheets
If IsError(Wsh.Range(BName)) Then
Else: Set rngName = Wsh.Range(BName): Exit For
End If
Next Wsh
If Not Wsh Is Nothing Then
BereichsSpaStr = rngName.EntireColumn.Address(0, 0)
Else: BereichsSpaStr = CVErr(xlErrNA)
End If
Set rngName = Nothing: Set Wsh = Nothing
End Function
* Wenn das erwartete FktsErgebnis nicht im Typ festgelegt wird, kann man alle F-Werte benutzen, anderenfalls ist im Fehlerfall nur #WERT! möglich! Die Vergabe eines VBA-Schlüsselworts als Variablenname ist unbedingt zu vermeiden!
Gruß Luc :-?
Besser informiert mit …

Anzeige
AW: Offensichtl soll es sich tatsächl um einen ...
25.06.2013 10:52:53
Peter
Hallo Luc
Vielen Dank.
Ich habe --> For Each Wsh In ActiveWorkbook.Sheets
geändert in --> For Each Wsh in ThisWorkbook.Sheets
So funktioniert es prima.
Danke auch für die übrigen Hinweise.
Gruss, Peter

Noch ein wichtiger Hinweis, ...
25.06.2013 15:21:23
Luc:-?
…Peter;
bei Verwendung von ThisWorkbook bezieht sich der jeweilige Ausdruck stets auf die Mappe, in der auch die verwendende Prozedur eingetragen ist, d.h., lagerst du die Prozedur irgendwann mal in ein AddIn aus, dann eben auf dessen Mappe, also das AddIn selbst, während sich ActiveWorkbook stets auf die aktuelle Mappe bezieht, die niemals ein AddIn sein kann und darf (dieses ist ja auch stets ausgeblendet). Deshalb ist die von und in Foren be- bzw geförderte inflationäre Verwendung von ThisWorkbook im Grunde genommen kontraproduktiv, denn das sollte eher die Ausnahme sein.
In einer Fktsprozedur, die als UDF in ZellFmln zum Einsatz kommen soll, wäre beides normalerweise (nicht aber hier!) überflüssig, da die berechnungsrelevante aktuelle Mappe stets die ist, in der auch die Fml steht.
Bei Einsatz der Fkts- in einer Subprozedur fktioniert sie wie ein Teil der Letzteren. Hier kommt es auf deren Standort an, wenn er mit dem der Fktsproz übereinstimmt. Ist eine andere Mappe die aktuelle und die Aktion soll trotzdem in ihrer Standort-Mappe erfolgen, ist ThisWorkbook die richtige Wahl, sonst wäre es natürlich wie zumeist ActiveWorkbook.
Man muss sich also genau überlegen, was man will und ggf auch perspektivisch vorhat bzw vorhaben könnte… ;-)
Ansonsten, bitte sehr, gern geschehen!
Gruß Luc :-?

Anzeige
AW: Noch ein wichtiger Hinweis, ...
25.06.2013 17:04:45
Peter
Hallo Luc
Danke für den Hinweis.
Hier im vorliegenden Fall muss es so sein, wie es jetzt ist.
Gruss, Peter

Na, dann iss ja jut... ;-) owT
25.06.2013 18:28:29
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige