Intersect(ActiveCell ,benannter_Bereich)

09/06/2009 - 21:59 von Eberhard Funke | Report spam
Hallo,

es soll herausgefunden werden, ob die ActiveCell sich innerhalb eines
benannten Bereichs befindet. Wenn ja, dann soll die obere linke Zelle
dieses Bereichs identifiziert werden.

Der unten stehende Code funktioniert, wenn *alle* benannten Bereich sich
auf demselben Blatt wie die ActiveCell befinden.
Befinden sich jedoch auch auf anderen Blàttern benannte Bereich, dann tritt
ein Fehler ein, denn ich nicht mit einer on-error-Routine abfangen konnte.

Sub Test()
Dim nm As Name
Dim rngName As Range
For Each nm In ActiveWorkbook.Names
If Not Application.Intersect(ActiveCell, _
Range(nm.Name)) Is Nothing Then
Set rngName = Range(nm.Name)
Exit For
End If
Next
'nur als Test:
Debug.Print rngName.Cells(1).Address, nm.Name, nm
End Sub


P. S.
[Gibt es eine elegantere Lösung anstelle von Range(nm.Name)?]

Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
 

Lesen sie die antworten

#1 Eberhard Funke
09/06/2009 - 22:50 | Warnen spam
Am Tue, 9 Jun 2009 21:59:25 +0200 schrieb Eberhard Funke:

Da fehlte noch etwas:

Sub Test()
Dim nm As Name
Dim rngName As Range
Dim blFlag As Boolean
For Each nm In ActiveWorkbook.Names
If Not Application.Intersect(ActiveCell, _
Range(nm.Name)) Is Nothing Then
Set rngName = Range(nm.Name)
blFlag = True
Exit For
End If
Next
If blFlag = True Then
Debug.Print rngName.Cells(1).Address, nm.Name, nm
Else
MsgBox "ActiveCell befindet sich in keinem benannten Bereich"
End If
End Sub

Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de

Ähnliche fragen