Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Verbesserung Makro Anlegen Mitarbeiter
#1
Guten Morgen,

ich habe eine Urlaubsübersicht erstellt und Hab hier Tabellen für die Monate und ein Tabellenblatt mit Grunddaten. Wenn ein neuer Mitarbeiter hinzukommt, lege ich per Makro einen neuen Eintrag in den Grunddaten an und in den entsprechenden Monaten.

In der Tabelle Grunddaten mache ich das mit diesem Code:

Code:
Sub Neuanlegen()

  Dim strInput As String
  Dim lngZeile As Long
   
'Aufforderuung zur eingabe des Namens'
   
  strInput = InputBox("Name: ")
  If Len(strInput) > 0 Then
     lngZeile = Application.Max(5, Cells(Rows.Count, 2).End(xlUp).Row + 1)
     Cells(lngZeile, 2).Value = strInput
     
  End If
 
'Aufforderuung zur eingabe der Urlaubstage'
   
    strInput = InputBox("vorhandener Erholungsurlaub: ")
  If Len(strInput) > 0 Then
     lngZeile = Application.Max(5, Cells(Rows.Count, 3).End(xlUp).Row + 1)
     Cells(lngZeile, 3).Value = strInput
  End If
 
'Aufforderuung zur eingabe der Sonderurlaubstage'
   
    strInput = InputBox("vorhandener Sonderurlaub: ")
  If Len(strInput) > 0 Then
     lngZeile = Application.Max(5, Cells(Rows.Count, 4).End(xlUp).Row + 1)
     Cells(lngZeile, 4).Value = strInput
  End If
     
'Aufforderuung zur eingabe der Stunden'
   
    strInput = InputBox("vorhandene Stunden: ")
  If Len(strInput) > 0 Then
     lngZeile = Application.Max(5, Cells(Rows.Count, 5).End(xlUp).Row + 1)
     Cells(lngZeile, 5).Value = strInput
  End If
 
End Sub
Und in den einzelnen Monaten mit diesem Code:

Code:
Sub NeurEintragMonat()
     
   Dim LRow As Long
   Dim strInput As String
   Dim lngZeile As Long
   Dim wks As Worksheet
         
 'berechnent die laufende Nummer

With ActiveSheet
  LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
  .Range(.Cells(LRow - 1, "A"), .Cells(LRow, "BR")).AutoFill _
     Destination:=.Range(.Cells(LRow - 1, "A"), .Cells(LRow + 1, "BR"))
  .Cells(Rows.Count, 2).End(xlUp).Resize(columnsize:=17) _
     .SpecialCells(xlCellTypeConstants).ClearContents
End With

     
'Aufforderuung zur eingabe des Namens'
   
  strInput = InputBox("Name: ")
  If Len(strInput) > 0 Then
     lngZeile = Application.Max(5, Cells(Rows.Count, 2).End(xlUp).Row + 1)
     Cells(lngZeile, 2).Value = strInput
     
  End If

End Sub

Nun würde ich diese beiden gern verbessern / miteinander verbinden. Sprich, wenn ich in den Grunddaten einen neuen Mitarbeiter anlege, das er das in den Monaten auch tut.
Mein Problem dabei ist, das wir bei uns in der Firma auch oft Mitarbeiter zeitlich begrenzt oder projektorrientiert angestellt haben. Sprich sie sind erst ab nem bestimmten Monat da und auch wieder weg.

Ich würde es gern mit einer Eingabeaufforderung beim anlegen in den Grunddaten festlegen, ab wann und bis wann dieser Mitarbeiter in der Firma ist und am liebsten die Tabellennamen im Makro als Zahl definieren.

Beispiel: Herr Pimpelhuber kommt im Juli in die Firma und bleibt bis Dezember.

Ablauf: In den Grunddaten auf Neu klicken, Namen und Urlaubstage angeben und die Monate angeben (hier 07 - 12) und dann legt das Makro den Mitarbeiter in den Monaten Juli - Dezember an.

Das wäre mein Wunsch? Jemand ne Idee?

Die angehängte Datei ist eine Musterdatei, die meiner Liste aber im Aufbau ähnlich ist. Original kann ich aus Datenschutz Gründen nicht einstellen.

Bemerkung: CROSSPOSTING bei : http://www.ms-office-forum.net/forum/sho...ost1818182


Angehängte Dateien
.xlsm   Beispiel_Übersicht.xlsm (Größe: 94,25 KB / Downloads: 4)
Antworten Top
#2
Hi,

Zitat:Die angehängte Datei ist eine Musterdatei,

ich glaube, du hast sie vergessen. :32:
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Schuedde
Antworten Top
#3
Oh, danke für die Info. Hatte erst die falsche drin und beim Aktualisieren ist was schief gegangen :16:
Antworten Top
#4
Verwende eine 'intelligente' Tabelle.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Schuedde
Antworten Top
#5
(12.07.2017, 09:38)snb schrieb: Verwende eine 'intelligente' Tabelle.
Okay, muss ich mich mal mit auseinander Setzen, hab das Schlagwort einfach mal gegoogelt, aber ich glaube das es nicht ganz meine Problemlösung ist, denn auch eine inteligente Liste ist ja irgendwo statisch bzw. arbeitet mit dem Bezug zu einer anderen Tabelle.

Wenn ich meinen Mitarbeiter jetzt zum Beispiel im August lösche würde er ja mit einer intelligenten Tabelle auch im Juli wieder raus sein. Das möchte ich ja eben nicht. Die Monatsübersicht und die Grunddaten können aufgrund der Personalwechsel nicht miteinander verknüpft sein, da ein entlassener Mitarbeiter aus den Grunddaten rausfliegt, aber trotzdem noch in den Monaten in denen er in der Firma war enthalten sein soll.

Daher muss ich die Daten in den Monaten schon schreiben und nicht einfach nur einen Bezug herstellen.

Aber trotzdem danke schonmal für die schnelle Antwort
Antworten Top
#6
In einer 'intelligente' Tabelle ist dein 'autofill' überflüssig.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Okay, hab mich mal bissl schlau gemacht und jetzt auch grad mal ausprobiert. Musste feststellen, das ich die intelligente Tabelle auf jedenfall gut gebrauchen kann, aber neunmal eben leider nicht für einen Zweck.

Ich komme nicht drum rum, das es in zwei Tabellen rein geschrieben wird, da wie gesagt, wenn er aus den Grunddaten rausfliegt, dann auch in dem Monat rausfliegt, wo er ja noch Mitarbeiter war. 

Ich hab ja auch schon die zwei eigenständigen Makros, finde halt nur keinen Weg, die miteinander zu verbinden, bzw. zu definieren wie er es in nur in bestimmte Monate schreibt. Bisher hab ich nur einen Weg gefunden, wie er es in die folgenden Listen schreibt, aber da müsste ich dann für jeden Monat ein neues Makro erstellen und das ist einfach zu viel, das muss doch einfacher gehen oder!?
Antworten Top
#8
Hmm keiner nen Ansatz?
Antworten Top
#9
Hallöchen,

ich würde die Mitarbeiter in den Grunddaten mit ihren Ein- und Austritsdaten anlegen.

In den Monatsdaten würde ich die Mitarbeiter ggf. per Formel übernehmen, wenn der Monat im Bereich der Ein-bis Austrittsdaten liegt. Dadurch eventuell entstehende "Leerzeilen" kannst Du im jeweiligen Monat ausblenden.

Sollte Dir das Ausblenden nicht gefallen, kommst Du eventuell mit excelformeln.de weiter. Dort gibt es eine Formel für "Autofilter per Formel". Die könntest Du so anpassen, dass du nach der Anwesenheit filterst.

Hier mal das Prinzip:

Tabellenblattname: Tabelle2
ABCDEFG
1Namevonbis01.01.201701.02.201701.03.2017
2Anton01.01.201731.03.2017AntonAntonAnton
3Egon01.02.201728.02.2017Egon

Benutzte Formeln:
E2: =WENN(UND(E$1>=$B2;E$1<=$C2);$A2;"")
F2: =WENN(UND(F$1>=$B2;F$1<=$C2);$A2;"")
G2: =WENN(UND(G$1>=$B2;G$1<=$C2);$A2;"")
E3: =WENN(UND(E$1>=$B3;E$1<=$C3);$A3;"")
F3: =WENN(UND(F$1>=$B3;F$1<=$C3);$A3;"")
G3: =WENN(UND(G$1>=$B3;G$1<=$C3);$A3;"")
von schauan
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste