Tabellenblatt erstellen mit automatischer Namensvergabe

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Agent.

    Tabellenblatt erstellen mit automatischer Namensvergabe

    Ich habe eine Exceltarbeitsmappe in der sich mehrere Tabellenblätter befinden. In den einzelnen Tabellenblätter sind Personen einzelner Jahrgänge meiner Berufsgruppe augeführt (z.B. 2000 , 2001 , 2006 )
    Nun habe ich ein Makro geschrieben, welches es ermöglicht in Textfelder die persönlichen Daten wie Name, Vorname, Jahrgang ( Einstelljahrgang) usw. einzugeben und nach einem Klick auf den Button "Eintragen" automatisch in das passende Tabellenblatt eingetragen wird bzw. ein neues Tabellenblatt erstellt wird. Zum erstellen folgender Code:

    For Each Worksheet In Worksheets
    If Jahr = Worksheet.name Then
    GoTo Eintragen:
    End If
    Next Worksheet

    Worksheets.Add

    Bearbeiten:
    tabelleneu = ("Tabelle" + Str(j))
    tabelleneu = Replace(tabelleneu, " ", "")
    Worksheets(tabelleneu).name = Jahr
    Worksheets(Jahr).Tab.ColorIndex = zufallszahl
    Worksheets("Vorlage").Range("A1:J6").Copy
    Worksheets(Jahr).Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Worksheets(Jahr).Range("A1:I1").FormulaR1C1 = "Klassenliste " + Jahr
    Worksheets(Jahr).Move Before:=Worksheets(anzahl)

    Mein Problem ist, das ich nach dem Erstellen des neuen Tabellenblatts den Namen ändern möchte.
    Beim ersten erstellen funktioniert dies auch, da die neu erstellte Tabelle "Tabelle1" , doch sobald ich ohne zu speichern und zu schließen eine neue Person eintragen möchte in einem noch nicht angelegtem Tabellenblatt wird dieses obwohl das Tabellenblatt "Tabelle1" bereits in z.B. 2007 umbenannt wurde mit dem Namen "Tabelle2" angelegt. Daher weiß ich nicht wie ich dieses nun anspreche, wäre es sinnvoll eine Variable in eine Zelle zu schreiben die sich nach dem Erstellen eines Tabellenblatts um 1 erhöt und beim Öffnen der Datei wieder auf 1 gesetzt wird? Und wenn man einen ErrHandler nutzt also
    On Error GoTo ErrHandler:

    ErrHandler:
    GoTo test:
    wieso funkioniert dieser nur einmal?
    D.h. wieso springt er nur einmal an die angegebene Stelle und nicht öfter?
    Hi!

    Damit der Err Handler beim 2ten Auslösen des gleichen Fehlers nochmal anspringt, musst du im Err Handler err.Clear aufrufen und somit behaupten, dass es nie einen Fehler gegeben hat.
    Das Problem ist, dass man hier recht einfach in eine Endlosschleife gelangt ;)

    Ansonsten kannst du den richtigen Tabellennamen durch diese Error-Schleife lösen. Du solltest aber Abfangen, ob der Fehler wirklich der ist, den du behandelst, indem du err.Number prüfst.


    mfG Andy

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    Danke für die schnelle Antwort.
    ich habe das problem über ein Label gelöst welches anfangs den wert 1 enthält und bei jedem erstellen +1 gesetzt wird und beim öffnen der arbeitsmappe wieder auf 1 gesetzt wird

    Bei dem Err.Handler bin ich lieber vorsichtig da es sich um einen laufzeit fehler handelt, der meiner Meinung nach an vielen Stellen auftreten kann und err.Number hatte ich schon eingebaut, aber wie gesagt ich glaube Laufzeitfehler "9" kann sehr häufig auftauchen
    Nachdem ich das err.clean eingebaut habe im errhandler wird der error trotzdem wieder angezeigt err wird zwar auf 0 gesetzt ( überwachung )
    aber der error wird trotzdem ausgegeben und das programm stoppt !
    Ich hab das problem nun auf eine andere Art und Weise gelöst ohne einen ErrHandler einzubauen.

    Bleibt nur noch eine Frage
    wie kann den Inhalt eines Textfeldes und einer Zelle in Excel vergleichen ohne "Case Sensitive" zu beachten
    d.h. Test und test sollen als gleich angesehen werden
    Ergebnis= String.Compare(Inhalt1,Inhalt2,True)
    wird als Syntax Fehler angezeigt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mate1988“ ()