ich möchte in einer Arbeitsmappe (workbook) dasjenige Arbeitsblatt (worksheet) finden, das einen bestimmten "benannten Bereich" ("named range") hat - z.B. "AdminList".
Die Idee hinter dem folgenden Code ist, alle worksheets eines workbooks anzusehen und nach dem named range abzufragen. Wenn der nicht vorhanden ist, gibt's einen Fehler - so weit so gut.
Eigentlich sollte der Code dann mit dem nächsten worksheet weitermachen. Das funktioniert aber nur nach dem Auftreten des ersten Fehlers, also in "Tabelle1". Wenn dann "Tabelle2" dran ist und dort erneut ein Fehler auftritt (also der named range auch dort nicht gefunden wurde), springt die Fehlerbehandlung in die Fehlerroutine des rufenden Programmes (das "getSheetName" aufruft).
Public Function getSheetName(sNamedRange) As String ' find sheet that
has sNamedRange (e.g. "AdminList")
Dim wks As Worksheet
Dim sMsg As String
getSheetName = ""
For Each wks In ActiveWorkbook.Worksheets
Err.Clear
On Error GoTo NextFor
If wks.Range(sNamedRange).Address > "" Then
getSheetName = wks.Name
Exit For
End If
NextFor:
Next
On Error GoTo 0
If getSheetName = "" Then
sMsg = "No worksheet found that contains a named range '" & sNamedRange & "'!"
MsgBox sMsg
End If
End Function
Wo liegt mein Denk- oder Codierfehler?