Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Abfrage, ob benannter Bereich existiert

Abfrage, ob benannter Bereich existiert
11.04.2006 08:35:04
specke
Hallo Experten,
ich möchte abfragen, ob in einem Blatt 1 ein benannter Bereich mit dem Namen, der auf Blatt 2 in Spalte B steht, existiert und dann eine Dropdown-Liste mit dem Inhalt dieses benannten Bereiches erstellen. Wenn es keinen solchen Bereich gibt, soll die Dropdown-Liste aus dem benannten Bereich "sonst" erstellt werden.
Dazu habe ich mir folgendes gedacht:

Sub setGenehmiger(Zeile)
Dim nam As Name
For Each nam In Worksheets("Blatt1").Names
If nam = "_" & Cells(Zeile, 2) Then
Cells(Zeile, 10).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=_" & Cells(Zeile, 2)
Else
Cells(Zeile, 10).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=sonst"
End If
Next
End Sub

Obwohl es in Blatt 1 mehrere benannte Bereiche gibt, durchläuft er die Schleife nicht. Wo liegt der Fehler?
Noch lieber wäre mir, wenn ich abfragen könnte, ob ein benannter Bereich leer ist.
Gruß specke

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfrage, ob benannter Bereich existiert
11.04.2006 09:13:55
u_
Hallo,
du verlässt die Schleife nicht, nachdem der Name gefunden wurde.
Versuch das (ungetestet)

Sub setGenehmiger(Zeile)
If NameExists(Worksheets("Blatt1"), "_" & Cells(Zeile, 2)) Then
Cells(Zeile, 10).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=_" & Cells(Zeile, 2)
Else
Cells(Zeile, 10).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=sonst"
End If
End Sub


Function NameExists(wks As Worksheet, strName As String) As Boolean
Dim Nam As Name
For Each Nam In wks.Names
If Nam = strName Then
NameExists = True
Exit For
End If
Next
End Function

Gruß
Geist ist geil!
Anzeige
AW: Abfrage, ob benannter Bereich existiert
11.04.2006 09:14:29
IngGi
Hallo Specke,
benannte Bereiche sind keine Objekte des Arbeitsblattes, sondern Objekte der Arbeitsmappe. Daher:
For Each nam In ThisWorkbook.Names
Gruß Ingolf
AW: Abfrage, ob benannter Bereich existiert
11.04.2006 09:32:54
Luschi
Hallo specke,
wenn man den Namen ganz normal definiert, dann gehört dem Workbook-Objekt der Name und nicht dem Worksheet-Objekt.
Nur wenn man bei der Namensvergabe den Tabellennamen voranstellt, dann besitzt auch die Tabelle eine Namensliste.
Name: abc         - Name wird im Workbook-Objekt geführt.
Name: Blatt1!abc  - Name wird im Workbook-Objekt und im entsprechenden Worksheet-Objekt geführt.
Also muß die Prozedur jetzt so aussehen:
Sub setGenehmiger(Zeile)
Dim nam As Name, ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Blatt1")
For Each nam In ThisWorkbook.Names
If InStr(1, nam.RefersTo, ws.Name, vbTextCompare) > 0 Then
'Name zeigt auf einen Bereich in Tabelle "Blatt1"
If nam = "_" & ws.Cells(Zeile, 2) Then
ws.Cells(Zeile, 10).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=_" & ws.Cells(Zeile, 2)
Else
ws.Cells(Zeile, 10).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=sonst"
End If
Next nam
Set nam = Nothing
Set ws = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
PS: bei Verwendung von Cells und Range immer die Tabellen-Referenz davorsetzen, um sicher zu gehen, daß auf die richtige Tabelle zugegriffen wird.
Anzeige
Danke!
11.04.2006 09:46:23
specke
Hallo,
Danke für eure Hilfe. Mit ThisWorkbook.Names funktioniert es!
Gruß specke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige