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

Bezug auf Sheet, in welchem die Funktion läuft?

Bezug auf Sheet, in welchem die Funktion läuft?
02.11.2012 08:49:16
Andreasser
Hallo zusammen, ich stehe seit einiger Zeit so ziemlich am Berg und hoffe auf eure Hilfe.
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?

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

Betreff
Datum
Anwender
Anzeige
AW: Bezug auf Sheet, in welchem die Funktion läuft?
02.11.2012 09:43:58
Klaus
Hi Andreasser,
vielleicht so?
Public Function klasse()
'meldet die Klasse zurück
Dim Blatt As String
REM Blatt = ActiveSheet.Name
Dim Zeile As Integer
Dim Akt_blatt As String
For Zeile = 1 To Workbooks.Item(1).Sheets.Count
blatt = sheets(zeile).name
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

AW: Bezug auf Sheet, in welchem die Funktion läuft?
02.11.2012 10:45:27
Andreasser
Hallo Klaus M.vdT.
Besten Dank für deinen Beitrag, leider funktioniert das so nicht, da
sheets(zeile).name
Worksheets.Item(Zeile).Name

das gleiche Resultat liefern.
Aber wenn es eine Möglichkeit gäbe die Nummer des sheets, in welcher die Formel steht auszulesen, dann wäre es so möglich, indem man Zeile durch diesen Wert ersetzen würde, aber geht dies überhaupt?

Anzeige
AW: Bezug auf Sheet, in welchem die Funktion läuft?
02.11.2012 10:51:54
Nepumuk
Hallo Andreasser,
so?
Public Function Klasse() As String
    
    'meldet die Klasse zurück
    
    Dim strCaller As String, strSheetName As String
    Dim lngIndex As Long
    
    strCaller = Application.Caller.Parent.Name
    
    Klasse = -1 'mit nichts gefunden vorbelegen
    
    For lngIndex = 1 To ThisWorkbook.Worksheets.Count
        
        strSheetName = Worksheets.Item(lngIndex).Name
        
        If Len(strSheetName) > 3 Then
            
            If Left$(strSheetName, 1) = Left$(strCaller, 1) Then
                
                Klasse = Mid$(strSheetName, 2)
                Exit For
                
            End If
        End If
    Next lngIndex
End Function

Gruß
Nepumuk

Anzeige
AW: Bezug auf Sheet, in welchem die Funktion läuft?
02.11.2012 10:54:37
Nepumuk
P.S. So ganz hab ich noch nicht verstanden was du genau willst.

AW: Bezug auf Sheet, in welchem die Funktion läuft?
02.11.2012 11:29:51
Andreasser
Wow, Perfekt!
Habe gestern Stunden lang gesucht, aber auf eine solche Lösung bin ich nicht gestossen.
Vielen Dank Nepumuk!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige