Info:
Ich habe ein Workbook mit drei Schulklassen, die Worksheets tragen die Klassennamen mit einem vorangestellten (eindeutigen) Buchstaben. Die Prüfungsresultate werden in separate sheets eingetragen, welche nummeriert sind und ebenfalls den eindeutigen Buchstaben vor der Nummerierung im Namen tragen.
Bsp: Klasse: 3bMNO
Übersichts_Sheet: Y3bMNO
Prüfungsdaten_Sheets:Y1, Y2...
zum Problem:
Ich habe nun eine Funktion geschrieben, welche mir die Klasse in den Prüfungsdatensheets zurückgeben soll:
Public Function klasse()
'meldet die Klasse zurück
Dim Blatt As String
Blatt = ActiveSheet.Name
Dim Zeile As Integer
Dim Akt_blatt As String
For Zeile = 1 To Workbooks.Item(1).Sheets.Count
Akt_blatt = Worksheets.Item(Zeile).Name
If Left(Akt_blatt, 1) = Left(Blatt, 1) And Len(Akt_blatt) > 3 Then
klasse = Right(Akt_blatt, Len(Akt_blatt) - 1)
GoTo Ende
End If
Next Zeile
klasse = -1 'nichts gefunden
Ende:
End Function
Wenn ich von der Übersicht einer anderen Klasse in die Prüfungsdaten der 3bMNO gehe, sehe ich im Feld, welches mir die Klasse bestimmen soll, dass dort die andere Klasse gelistet ist.
Lösungsansatz:
Meiner Meinung nach ist mein Problem in
Blatt = ActiveSheet.Name
begründet, da dies auf das aktive Sheet zugreift. Ich würde gerne sagen, dass sich die Funktion auf das Sheet, in welchem sie ausgeführt wird, beziehen soll, doch ich komm nicht drauf wie ich das mache. Habe bereits ThisSheet versucht, doch das kennt VBA offensichtlich nicht, kann mir hier jemand weiterhelfen?