19.07.2016, 10:15 (Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2016, 10:15 von Rabe.)
Hi,
(18.07.2016, 09:23)Gast 123 schrieb: danke für den Hinweis, habe den Fehler korrigiert. Ursprünglich stand dort: For Each f In ESP.Range("X4:AC10") mit Set ESP = Worksheets("Einsatzplan")
Nachdem ich zum testen das Worksheet Einsatzplan mit Select immer auswaehlte habe ich ESP vor Range gelöscht. In diem einem Fall wohl unvollstaendig. (Flüchtigkeitsfehler)
gigantisch, das klappt hervorragend!
Jetzt fände ich es gut, wenn sich der Einsatzplan bei Jahreswechsel automatisch anpasst, wie ich es in meiner hochgeladenen Datei mit Formeln realisiert hatte.
So, nachdem ich meine Freudensprünge beendet habe und mir eure genialen Tabellen angesehen habe, bin ich noch mehr begeistert als ich es eh schon war.
Das ist genauso wie ich es mir erhofft habe. Leider verstehe ich nicht viel von eurem Datenbank und Makro Gespräch :( Aber was ihr da für Arbeit investiert habt ist so wahnsinnig toll. Mein Chef hat mir eben über die Schulter geschaut und war auch sehr angetan von allem.
WIn bekomme ich als Laie denn jetzt diesen Drop Down Fehler weg? Würde ja auch gern ansatzweise verstehen was ihr da macht und ein wenig was dazu lernen.
ich bedanke mich für die Rückmeldung und bin sehr erfreut das ich Euch überraschen konnte. Das ist die Exel Praxis von alten Praktikern. Wobei ich offen zugebe kein echter Profi zu sein.
Mein Tipp vorab: benutzt doch meine Beispieldatei zum testen, indem ihr die Datenbank bitte einmal mit echten Mitarbeiter Daten ausfüllt. Wann wer in Urlaub war, Krank war. Dafür gibt es ja ein Eingabefeld wo man die Eingabe mit einem Doppel Buıchstaben beenden kann. z.B. "aa" Der Vorteil ist, in meiner Beispieldatei können keine Daten durch MNakrofehler zerstört werden. Ich bitte immer darum eine neues Makro zuerst im Beispiel auf Fehler zu testen. Ist sicherer!
Mich würde rein fachlich interessieren wie gut das Programm in der Praxis mit echten Daten lauft. Bei dieser Grösse werden Erfahrungsgemaess noch Fehler drin sein. Die beheben wir in Ruhe.
Mich freut es immer wenn mir ein gut funtionierender praxisgerechter Entwurf gelungen ist. Bin nur ein ein facher Facharbeiter mit Volksschulbildung, aber ich liebe meine Arbeiten sehr. Herzliche Grüsse an den Chef .... (jetzt habe ich noch eine echte Knobbelaufgbae!)
Okay ich werde gleich mal ein paar Kollegen einpflegen und dann ein wenig rumspielen.
Aber ohne Witz...ich hatte vorher mal in ein anderes Forum geschrieben da bekam ich nur die Antwort ich solle einen Excel Grundkurs besuchen und nicht so dumme Fragen stellen :/
ich habe nun alle 89 Kollegen eingepflegt (dachte ich zumindest). Bis zum Kollegen Nr.22 ist alles tutti...ab Kollege Nr. 23 kommt immer der Hinweis dass dieser nicht in der DB gefunden wurde :22:
Was mache ich falsch? Kenne mich mit deinen geschriebenen Makros leider so gar nicht aus :(
Und dann noch zwei allgemeine Fragen... Zum einen ist unsere Firma in Abteilungen unterteilt. Jeder Teamleiter der einzelnen Abteilungen soll am Schluss für seine Teammitglieder Urlaub, Krankheit etc eintragen. Unsere Teamleiter sind zu 80% nicht wirklich fit was Excel und Co. angeht. Gibt es die Möglichkeit die Eingabe seeeehr simpel zu gestalten und (viel wichtiger) so zu schützen, dass die an den Formeln etc nix kaputt machen können?
Und dann Mammutfrage 2: Aufgrund des Datenschutzes auch intern im Unternehmen sollen die einzelnen Teamleiter nur Zugriff auf Ihre Teammitglieder erhalten (ausgenommen Geschäftsführer). Ist sowas durch Passwörter und Benutzer realisierbar? :20:
du machst sicher nichts falsch. Das Beispiel zeigte mir nur Mitarbeiter von A-J, für 89 Personen ist es nicht ausgelegt. Das kann ich aber aendern. Über die Mammutfragen muss ich in Ruhe nachdenken, die Aufgabe hatte ich bisher noch nicht. Im Augenblick nimmt mich ein anderer Thread stark in Ansğruch, und ich muss dringende private Dinge erledigen. (Behörden)
Ich möchte diese Arbeit auf jeden Fall weiter bearbeiten, brauche etwas Zeit. Ich melde mich wieder ....
Kurze Frage: Es gan 3 Tabellen als Datenbank. Welche wurde benutzt??? Tabelle1 , 2 oder 3 ?? Der Untershied liegt in der Eingabe als Tage von: bis: oder als Tage ab: mit Angabe der Tage ? Wo finde ich dşe eingegebenen Daten?? Was ist mit der Spalte "Resturlaub"? Soll die mit benutzt werden oder entfallen??
Ja das war mein Fehler. Hätte vielleicht von Anfang an sagen sollen um wie viele MA es sich handelt.
Ich tüftel aktuell selbst ein wenig an deinem Entwurf rum...Habe die Hoffnung dass ich das ganze irgendwann einmal verstehe. Daher...Bitte kein Stress wegen dem Einsatzplan. Mach erstmal alles andere :)
Zu deinen Fragen: Benutzt habe ich Tabelle 2. Das ist für uns denke ich am Besten. Spalte Resturlaub kann eigentlich entfallen. Das würden die Kollegen denke ich mal nicht verstehen :)
ich hoffe dafür kann sich das vorlaeufige Ergebnis sehen lassen.
Die Datenbank wurde für 90 Mitarbeiter vorgesehen und kann beliebig erweitert werden. Die Eingabe für die Datenbank habe ich in die Tabelle "Einsatzplan" integriert. Ich denke das ist sinnvoller als ein Extra Blatt. Zusaetlich kann jetzt im "Einsatzplan" der Datenbank Inhalt angezeigt werden. Und es gibt Button zum Daten aktualisieren.
Das Makro wird beim Mitarbeiter "D" meckern und Überlauf anzeigen, weil es zur Zeit nicht sauber arbeiten kann. Bei unsinnigen Daten meckert es diese an: Datum Überschneidung z.B. wenn Urlaub und Krankheişt auf den gleichen Tag fallen, das kann ja nicht sein!! Im Augenblick habe ich aber frei erfunde Daten, die passen halt nicht immer überein!
Die Wahrheit wie gut es funktioniert zeigt sich erst mit echten Daten in der Praxis.
Im Augenblick gibt es eine UserForm als Vorschlag zum Thema Passwort und Zugriffs Berechtigung für die verschiedenen Abteilungen. Das ist aber noch nicht ausgegoren. Vor allem fehlt mir hier jede praktische Erfahrung, weil ich damit nie beschaeftigt war. Da muss man sich langsam herantasten, evtl. andere Berater im Forum zu Rate ziehen.
Ich warte jetzt erst einmal ab wie weit meine Programmierung einwandfrei laeuft. Fragen wird es sowieso geben.
mfg Gast 123
PS eine Formel im Einsatzplan habe ich korrigiert, "1/2 Tag Urlaub" muss durch 2 geteilt werden. die Ausgabezelle für DropDwon, bisher AD2, habe ich auf "X2" verschoben. Liegt jetzt unter dem DropDown Object, damit kann man die Zelle nicht versehentlich anklicken oder löschen.
Im Modulblatt gibt es Makros zum Blatt sperren / freigeben. Das geht auch ohne Passwort !! Man sollte im Einsatzplan die Feiertage noch markieren, entweder rote Schrift oder Innenfarbe. Sonst kann mein Programm nicht erkennen das man sie überspringen muss !!
25.07.2016, 10:32 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016, 13:46 von Rabe.)
Hi,
(23.07.2016, 23:02)Gast 123 schrieb: Ich warte jetzt erst einmal ab wie weit meine Programmierung einwandfrei laeuft. Fragen wird es sowieso geben.
Als bisher Unbeteiligter kann ich die Datei nicht bedienen, deshalb hier die ersten Fragen: Was muß wo eingetragen und welcher Button wann gedrückt werden, was muß danach wo stehen? Welches Makro oder Userform wird überhaupt benötigt? Warum kannst Du mein Format für die Jahreszahl nicht übernehmen?
In Tabelle2 ist die Variable "Wert" nicht deklariert.
In Module6 ist "ok" nicht deklariert.
Mein Vorgehen: Ich gebe für den Arbeiter E in AK3 ein: U in AK 4: 27.08.2016 in AK6: 18.09.2016
Dann drücke ich auf Button: Eingabe buchen
Jetzt kommt eine Fehlermeldung wegen nicht deklarierten Variablen für Zeile 84 und 85: Tab2.Range(Adr).Offset(0, 4) = Von Tab2.Range(Adr).Offset(0, 5) = Bis
Wenn ich da jeweils ein t davorsetze, kommt eine Fehlermeldung für Zeile 40, Typen unverträglich If Txt = "" Or tVon = "" Or tBis = "" Then _
wenn ich dann statt "" bei tVon und TBis eine 0 schreibe, läuft es zwar durch, aber es werden keine Daten eingetragen und viele Zellen bleiben leer, auch bei folgender Auswahl anderer Kollegen bleiben einzutragende Zellen komplett leer.
Mit Sicherheit eine Fehlbedienung. Eine kurze Anleitung für Unbedarfte (nicht in der Materie drin Steckende), was wann warum wo einzugeben ist, wäre toll. Durch die vielen Makros, die zum Teil nicht benötigt werden, habe ich auch den Überblick nicht, in welchem ich überhaupt nachschauen muß, um zu "prüfen", ob ich irgend wo etwas entdecke.
Als Tipps:
Ich benenne in meinen Projekten die Module mit sprechenden Namen und nicht benötigte Makros verschiebe ich in ein Modul "mdl_unbenutzt".
Zur Unterscheidung schreibe ich bei Modulen immer "mdl_ " vor die Modul-Namen und bei Userforms: "frm_"
Am Anfang jedes Moduls usw. (Tabellen, Userforms und allgemeine Module) sollte "Option Explicit" stehen, dann werden undeklarierte Variablen immer gleich am Anfang bemerkt. Wenn Du im Editor bei Extras - Optionen im Register "Editor" die "Variablendeklaration erforderlich" ankreuzt (dort am besten alles ankreuzen), wird dies zukünftig bei neuen Modulen automatisch eingetragen.
mit "Debuggen" - "Kompilieren von VBAProjekt" werden alle Makros und Module überprüft
ich bedanke mich bei Rabe sehr das er mein Programm angesehen und geprüft hat. Amüsanterweise unterlaufen mir beim Bereinigen meiner Makros, wenn ich es richtig getestet habe und dann ins Reine bringen will, mit Kommentare versehe, immer wieder dumme "Flüchtigkeitsfehler".
Mir fiel z.B. im kommentieren Programm auf das die Variable "Bis" nicht immer einwandfrei funktionierte. Aenderte sie in der Dim Anweisung in tBis um, und vergass sie unten im Code zu aendern! Doofer Fehler! Und es gab noch ein paar dumme Fehler, die Rabe zum Glück auffielen. Bitte das Makro korrigieren.
Korrekturen in: "Eingabe buchen" 'Korrektur bei "1/2 Tag Urlaub"
Tab2.Range(Adr).Offset(0, 4) = tVon statt Von , Bis => tVon, tBis Tab2.Range(Adr).Offset(0, 5) = tBis
MsgBox "Eingabe wurde gebucht" .Range("AK3:AK6") = Empty (hier war AK3:K3 angegeben, dadurch wird das Textfeld gelöscht !!)
'Eingabe Vorprüfung: Ausnahme 1/2 Tag Urlaub If Txt = "" Or tVon = Empty Or tBis = Empty Then _ (bei tVon = "" erfolgt Fehlermeldung, weil Text)
Weitere Fehlermeldungen von Rabe: In Module6 ist "ok" nicht deklariert. Stimmt, habe ich übersehen - bitte im Modul nach Sub ergaenzen: Dim j As Object, ok As Variant
In Tabelle2 ist die Variable "Wert" nicht deklariert. Dieser Code kann komplett gelöscht werden !! s. Modul: "Eingabe buchen" im Blatt "Einsatzplan" gehe ich über den Button, -ohne Target- !!
An Rabe: im Augenblick meldet das Makro weg. unsinniger Daten Überlauf an, wg. Datum Überschneidungen, Konkret: in der Do Loop Funktion suche ich den ersten Tag im Monat zum einfügen von Text und Innenfarbe. Ist die Zahl durch Text überschrieben, haengt sich die Do Loop Schleife bei erneutem Datum in einer Todesschleife auf. Normalerweise können nicht 2 Termine auf denselben Tag fallen !! Um eine Todesschleife zu verhindern erzwinge ich dann den Abbruch durch "Überlauf Meldung" d.h. der User muss seine Daten kontrollieren, was dann in der Datenbankk nicht stimmt?
Im Augenblick gibt es natürlich "unsinnige Daten" zum Testen. Das war ja zum Prüfen beabsichtigt. Wir werden sehen wie gut es laeuft wenn das Makro in der Praxis mit echten Daten getestet wird.
ich könnte bei diesem Thread gut Hilfe der Kollegen brauchen, sofern der Frager sich meldet.
Eine Aufgabe wo mir jedes fachliche Wissen und jegliche Erfahrung fehlt war die Anfrage: kann man die Aufgabe so gestalten das jede Abteilung nur Einsicht in ihre Mitarbeiter hat, aber aus Datenschutz Gründen nicht die Daten der anderen sehen kann. Wie macht man das??
Meine Idee als Vorschlag war die UserForm, in der Hoffnung das Kollegen im Forum eine schlaue Idee dazu haben wie man das weiter Entwickeln kann. Da ist mein fachliches Können ausgereizt. Man sollte aber abwarten ob Nuff85 sich meldet und diese Aufgabe übernommen werden soll??
Zumindest hat es mir Spass gemacht diese Anfrage wie man das in der Praxis bewerkstelligen kann soweit zu bearbeiten. Das möchte ich auch gerne zu Ende bringen, ich mag keine "halben Sachen"
Dein Jahreskalender Er hat mir gefallen, und ich habe in integriert (s. ausgeblendete Zeilen) Die Tage sind aber im Jahresformat formatiert, z.B. als: "1.2.2016" Ich wusste auf Anhieb keinen Weg wie ich nur die Tage nach oben kopieren kann? Machte es dann über meine Zwischenlösung.
********************************************************************* ok Variable wird von mir -nie deklariert-, weil Excel sie automatisch auf Variant setzt. Edgar hat ein schönes Programm geschrieben zum Thread: 19 Spieler an Tische verteilen. Ich war gerade mit seinem Programm beschaeftigt, als ich deine Nachricht las. Der Witz:
Edgar hat eine InputBox und erwartet die Eingabe der Spieler in eine Variable als Long deklariert! Gibt man nichts ein, drückt auf "Abbrechen", kommt eine Fehlermeldung, weil seine Deklaration jetzt nicht mehr stimmt. Bei Variant kann ich dahinter mit Ende bei Empty das Makro abbrechen.
ich hoffe alle Fragen sind beantwortet und würde mich über einen erfolgreichen Abschluss freuen.