Clever-Excel-Forum

Normale Version: Tabellenblätter via Macro erstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich bin grade am basteln und komme (trotz Google) nicht weiter. Als Info: Bin blutiger Excel-Anfänger und mogele mich grade so durch....

Im Anhang ist mein Projekt. Mein Plan ist, dass ich im Blatt "Abrechnungsdaten" in der A-Spalte Namen eintragen kann.
Hierdurch soll das Macro getriggert werden.
Das Macro soll dann anhand des Blattes "Vorlage" ein neues Blatt erstellen; dieses Blatt entsprechend der Eintragung in der A-Spalte auf dem Blatt "Abrechnungsdaten" benennen und den Namen auf diesem Blatt zusätzlich in "B3" eintragen.

Zusätzlich sollten die Verweise (siehe in der Zeile "Paul" Spalten B-E auf dem Abrechnungsblatt) korrekt übernommen bzw. entsprechend angepasst werden.

Toll wäre es, wenn die A-Spalte auf dem Blatt "Abrechnungsdaten" automatisch mitwächst, dass also das Macro erkennt, dass neue Eintrage in der A-Spalte erfolgt sind und alles in Gang setzt.....

Ich hoffe, dass meine Ausführung verständlich ist.

Folgendes Macro habe ich mir zusammengezimmert......


Viele Grüße

Oli


Code:
Sub Anlegen()
Dim Wiederholungen As Long
Dim wksL As Worksheet
Set wksL = Worksheets("Abrechnungsdaten")
Application.ScreenUpdating = False
Worksheets("Abrechnungsdaten").Activate

For Wiederholungen = 3 To Range("A65536").End(xlUp).Row

If Cells(Wiederholungen, 1) <> "" Then
   Worksheets("Vorlage").Copy After:=Sheets(Sheets.Count)
   ActiveSheet.Name = wksL.Cells(Wiederholungen, 1).Text
   
Else
Exit Sub
End If
Worksheets("Abrechnungsdaten").Activate
Next

Set wksL = Nothing

Application.ScreenUpdating = True
End Sub

[attachment=26239]
Erstelle eine richtige Database wie in der angehängte Datei.
Hallo snb,

erstmal ein Dankeschön für die Antwort, aber ich fange damit nichts an......

Kannst du das etwas genauer erläutern?
Hallo

ich habe das vorhandene Makro im Beispiel mal so überarbeitet wie ich es benutzen würde.  Ist nur ein Vorschlag.

Der Button hat eine Doppel Funktion:  wird ein Name eingegeben wird die letzte Zeile nach unten kopiert, ein neues Sheet angelegt, der Name in der Abrechnung Spalte A eingetragen, und die Formeln in B+C auf das neue Sheet korrigiert. Bei Text Eingabe "Alle" werden wie vorher über die For Next Schleife - Alle Mitarbeiter Sheets - erstellt.  Beide Makros prüfen ob das Blatt bereits existiert?  Bei Einzelsheet erfolgt eine Fehlermeldung! 
 
Bitte prüfen ob im neuen Sheet alles korrekt ausgefüllt wurde??  Würde mich freuen wenn dieses kleine Makro für die Praxis brauchbar ist.

mfg  Gast 123
Hallo Gast 123,

super; vielen Dank!

Kleines Problem damit.......Der Button multipliziert sich mit jeder neuen Eingabe. Wie lässt ich das abstellen? [attachment=26279]

Ich vermute, dass sich daraus das folgende Problem ergibt: [attachment=26280]


Vielen herzlichen Dank für deine Hilfe!!!
Hallo

ich fru mich sehr das mein Programm auf Anhieb so gut funktioniert. Kleine Querelen beim Erstversuch sind normal.

Abhilfe für Button:   Den Button bitte ganz nach oben verschieben und mit der rechten Maustaste die Eigenschaften aendern. In der Einstellung ob der Button mit einer Zelle verbunden sein soll bitte auf "Free Floting" aendern , d.h. unabhaenig von einer Zelle! Dann sollte der Effekt aufhören.   

Das zweite Problem warum es zwischen Peter und Summe keine Leerzeile gibt ist mir im Augenblick ein Raetsel. Bei mir tritt der Effekt bisher nicht auf. Dafür habe ich einen anderen Fehler entdeckt, denn ich technisch NICHT verstehe!

@snb   Hallo snb, du bist hier der bessere Fachmann. Vielleicht weisst du warum das passiert. Gebe ich für ein neues Blatt nicht nur den Vornamen, sondern so an:  "Mike Krüger", versagt bei mir die Formelzuweisung an Zelle F6 + F11! Schreibe ich es so:  "Mike_Krüger", öffnet Excel mir den Datei Editor um die Verknüpfung zu suchen, fügt die Formel bei Abbrechen aber trotzdem korrekt ein!  Den verwirrenden Fall hat ich bisher noch nicht.  

Woran kann das liegen??  Müsste ich den Code in -FormulaLocal- aendern???

mfg Gast 123
Hallo,

(02.09.2019, 12:35)Gast 123 schrieb: [ -> ]Das zweite Problem warum es zwischen Peter und Summe keine Leerzeile gibt ist mir im Augenblick ein Raetsel. Bei mir tritt der Effekt bisher nicht auf. Dafür habe ich einen anderen Fehler entdeckt, denn ich technisch NICHT verstehe!

@snb   Hallo snb, du bist hier der bessere Fachmann. Vielleicht weisst du warum das passiert. Gebe ich für ein neues Blatt nicht nur den Vornamen, sondern so an:  "Mike Krüger", versagt bei mir die Formelzuweisung an Zelle F6 + F11! Schreibe ich es so:  "Mike_Krüger", öffnet Excel mir den Datei Editor um die Verknüpfung zu suchen, fügt die Formel bei Abbrechen aber trotzdem korrekt ein!  Den verwirrenden Fall hat ich bisher noch nicht.  

Woran kann das liegen??  Müsste ich den Code in -FormulaLocal- aendern???

mfg Gast 123


bin zwar nicht snb aber vielleicht nimmst Du meine Hilfe trotzdem.

Code:
Sub EinzelSheet_anlegen()
Dim NewSht As Worksheet  'Error Test'
Worksheets("Abrechnungsdaten").Activate

On Error Resume Next
Set NewSht = Worksheets(Mitarbeiter)
If Not NewSht Is Nothing Then MsgBox "Dieses Blatt existiert bereits!": Exit Sub

'On Error GoTo Fehler
With Worksheets("Abrechnungsdaten")
     LZell = .Range("A65536").End(xlUp).Row
     If Cells(LZell, 1) = "SUMMEN:" Then LZell = LZell - 2
     'Pr?fung:  vermeiden das LZell 65536 Zeilen sind!
     If LZell > 200 Then MsgBox "LZell Fehler!": Exit Sub

     .Rows(LZell).Copy  'Zeile einf?gen
     .Rows(LZell + 1).Insert shift:=xlDown
     .Cells(LZell + 1, 1).Value = Mitarbeiter
      Application.CutCopyMode = False
    
     Worksheets("Vorlage").Copy After:=Sheets(Sheets.Count)
     ActiveSheet.Range("B3") = Mitarbeiter    'Name einf?gen
     ActiveSheet.Range("F3") = .Range("A1")   'Monat einf?gen
     ActiveSheet.Range("A6:D6") = Empty       'A6:D6 l?schen
     ActiveSheet.Name = Mitarbeiter           'Sheet Name setzen
        
     'Formel in Abrechnungsdaten korrigiern
     .Cells(LZell + 1, 2).Formula = "='" & Mitarbeiter & "'!F$6"
     .Cells(LZell + 1, 3).Formula = "='" & Mitarbeiter & "'!F$11"
      Worksheets("Abrechnungsdaten").Activate
End With
Exit Sub
Fehler:  MsgBox "Fehler bei:  EinzelSheet_anlegen"
End Sub


Fällt Dir was auf? Und versuche mal in Excel selber zu bauen, indem Du in einer Zelle = eingibst, auf das Tabellenblatt Mike Krüger wechselt, auf irgendeine Zelle klickst, und danach Return. Wie sieht die Formelzelle dann aus?
Hi Gast 123

Zitat:Das zweite Problem warum es zwischen Peter und Summe keine Leerzeile gibt ist mir im Augenblick ein Raetsel. Bei mir tritt der Effekt bisher nicht auf. Dafür habe ich einen anderen Fehler entdeckt, denn ich technisch NICHT verstehe!

Die fehlende Zeile geht auf mein Verschulden zurück. Das eigentlich Problem ist, dass die zweite Zeile kopiert wurde.


Deine Buttonlösung probiere ich sofort aus!

Die Sache mit Mike Krüger ist mir noch gar nicht aufgefallen.....ist aber sehr interessant, da ich die einzelnen Mitarbeiter definitv mit Vor- und Nachnamen eintragen sollte.
Oder aber zumindest als Hr.Krüger.

Viele Grüße
Hallo an alle

@Stefan   Sorry das ich nicht alle Kollegen schrieb, du bist auch sehr gut, hast mehr Programmier Wissen wie ich. 
Natürlich nehme ich dankbar deine Hilfe an. Vielen Dank für deine Korrektur des Codes.

@CheckNicht   Mir fallt grade noch ein Vorschlag für deine Tabelle ein, den ich vergessen habe. Weil Tabellen sehr weit nach unten wachsen können, und man dann immer nach den Summen zum Ansehen scrollen muss, habe ich mir angewöhnt in meinen Entwürfen für Freunde die Summenformeln ganz nach oben zu stellen.   Ist nur ein Vorschlag von mir.

mfg  Gast 123
Guten Morgen,

vielen Dank für eure Hilfe!

Das passt (fürs erste) so für mich.


Ich wünsche euch einen guten Start in die neue Woche!

Grüße