Methoden zum Ansprechen eines Arbeitsblattes

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Novazizo|Sabrina.

    Methoden zum Ansprechen eines Arbeitsblattes

    Hallo Communitiy,

    Frage:
    Welche Methoden gibt es um ein Arbeitsblatt in einer Arbeitsmappe anzusprechen...

    Ausser nach Namen:

    Visual Basic-Quellcode

    1. ThisWorkbook.Worksheets("Tabelle1")


    und nach Position auch nicht:

    Visual Basic-Quellcode

    1. ThisWorkbook.Worksheets(1)


    Am besten eine Methode die immer greift. Egal an welcher Stelle das Arbeitsblatt ist und egal wie es heisst...

    MfG
    No!
    Wenn du den Code in das Arbeitsblatt selbst verfrachtest, kannst du es mit "Me" ansprechen.
    Ansonsten pflege ich im VB-Editor die Objekte so umzubenennen, dass sie einen sprechenden Namen haben und spreche sie über den Objektnamen an.

    Ansicht..Eigenschaftsfenster (oder F4)
    Objekt d.es Arbeitsblatt anklicken
    Im Eigenschaftsfenster unter der Property (Name) z.B. "Config" eintragen, dann kannst du es so ansprechen:

    Visual Basic-Quellcode

    1. Set ConfigFirstCell = Config.Range("A1")
    Egal wie das Tabellenblatt umbenannt wird, der Objektname bleibt immer derselbe.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo petaod,

    vielen Dank für die schnelle Antwort.

    Ich habe die Lösüng mit dem Property "Name" genutzt.

    Visual Basic-Quellcode

    1. For i = 1 To Worksheets.Count
    2. ' automatische Berechnung aus
    3. Worksheets(i).EnableCalculation = False
    4. If Sheets(i).Name = Basisdaten.Name Then
    5. Daten = i
    6. ElseIf Sheets(i).Name = Über.Name Then
    7. Über = i
    8. ElseIf Sheets(i).Name = Position.Name Then
    9. Position = i
    10. End If
    11. Next i


    Du bist mir wie immer sehr hilfreich... Dank dir nochmals! :thumbsup:

    Grüße No!

    Visual Basic-Quellcode

    1. ElseIf Sheets(i).Name = Über.Name Then
    2. Über = i
    Was du tatsächlich erreichen willst, weiß ich nicht, aber das funktioniert so nicht. Du kannst nicht denselben Name als Worksheet und als Integer verwenden


    Im Übrigen kannst du auch direkt das Objekt verwenden und musst nicht über den Namen gehen:

    Visual Basic-Quellcode

    1. For Each ws in ThisWorkbook.Worksheets
    2. If ws Is Basisdaten Then
    3. 'tu was
    4. ElseIf ws Is Über Then
    5. 'tu was
    6. ElseIf ws Is Position Then
    7. 'tu was
    8. End If
    9. Next i


    Anmerkung am Rande:
    Falls du irgendwann mal in einem internationalen Umfeld arbeiten willst, gewöhn dir an, keine regionalen Zeichen (z.B. Umlaute) in den Bezeichnungen zu verwenden (Objektnamen, Variablennamen...).
    Abgesehen davon holst du dir mit solchen Zeichen Potenzial für ungeahnte versteckte Probleme, z.B. bei Versionswechsel oder Konvertierung.

    Als Blattname für ein Tabellenblatt ist so etwas noch tolerabel (und auch nicht steuerbar, weil der vom User verändert werden kann), nicht aber als Objektname (innerhalb des Programms an Stellen wo es nicht explizit als Text verwendet wird).
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()

    Hey pataod,

    Du kannst nicht denselben Name als Worksheet und als Integer verwenden


    Hab ich auch nicht... Ich habe hier nur meine Namen anders genannt! Datenschutz usw. ;)


    Anmerkung am Rande:
    Falls du irgendwann mal in einem internationalen Umfeld arbeiten willst, gewöhn dir an, keine regionalen Zeichen (z.B. Umlaute) in den Bezeichnungen zu verwenden (Objektnamen, Variablennamen...).
    Abgesehen davon holst du dir mit solchen Zeichen Potenzial für ungeahnte versteckte Probleme, z.B. bei Versionswechsel oder Konvertierung.

    Als Blattname für ein Tabellenblatt ist so etwas noch tolerabel (und auch nicht steuerbar, weil der vom User verändert werden kann), nicht aber als Objektname (innerhalb des Programms an Stellen wo es nicht explizit als Text verwendet wird).


    Ich werde in Zukunft versuchen Umlaute zu vermeiden. Ich denke ich werde direkt auf die englische Sprache zurückgreifen!
    Danke für deine Tipps. Wie immer sehr hilfreich. :thumbsup:

    Mit freundlichen Grüßen
    No!