Moin moin liebe Excelisten, 
motiviert durch euer Feedback zu meiner letzten Frage habe ich mein Projekt von vorne begonnen.
Kurz zusammengefasst geht es um eine betriebsübergreifende Struktur von Dienstplänen, Mitarbeiterdatenbank und Auswertungen.
Die Basis stellt die Mitarbeiterdatenbank dar, welche durch die Personalabteilung via UserForm gefüttert, bzw. gepflegt wird.
Dort stehe ich momentan bei ca. 95%, allerdings habe ich noch wenige Kleinigkeiten bei denen ich eure Hilfe benötige.
Unter anderem soll bei neuen Mitarbeitern das Bruttogehalt -oder- der Bruttostundenlohn eingetragen werden.
Dafür stehen die TextBox_bruttogehalt und die TextBox_bruttostundenlohn zur Verfügung.
Schön wäre es, wenn sobald eine TextBox gefüllt ist, die andere TextBox für Eingaben gesperrt wird. (ich denke da an .Locked und zusätzlich eine MsgBox falls eine Eingabe versucht wird.)
Nun soll allerdings die Spalte in der Datenbankstabelle nicht leer bleiben, sondern mithilfe hinterlegter Basisdaten ausgerechnet werden.
Beispiel:
Neuer Mitarbeiter wird auf Vollzeit (174h/Monat) mit mit einem Bruttogehalt von 3600€ angestellt, dann soll beim Hinzufügen des Mitarbeiters die Spalte Bruttostundenlohn automatisch ausgefüllt werden, nämlich mit 3600 (Eingabe in TextBox_bruttogehalt) geteilt durch 174 (VLookUp -> Worksheet "Basisdaten" -> matrix_vertragliche_arbeitszeit, Spalte 4).
Andersherum natürlich auch, nämlich wenn nur der Bruttostundenlohn eingetragen wird, dann dieser Wert multipliziert mit der monatlichen Stundenanzahl der jeweiligen Vertragsart der matrix_vertragliche_arbeitszeit.
Der Gefahr bewusst, dass ihr mich aufgrund eines Denkfehlers hin in der Luft zerreißt, freue ich mich dennoch auf eure Antworten.
Danke!
Nachfolgend der Code der UserForm_neuermitarbeiter:

motiviert durch euer Feedback zu meiner letzten Frage habe ich mein Projekt von vorne begonnen.
Kurz zusammengefasst geht es um eine betriebsübergreifende Struktur von Dienstplänen, Mitarbeiterdatenbank und Auswertungen.
Die Basis stellt die Mitarbeiterdatenbank dar, welche durch die Personalabteilung via UserForm gefüttert, bzw. gepflegt wird.
Dort stehe ich momentan bei ca. 95%, allerdings habe ich noch wenige Kleinigkeiten bei denen ich eure Hilfe benötige.
Unter anderem soll bei neuen Mitarbeitern das Bruttogehalt -oder- der Bruttostundenlohn eingetragen werden.
Dafür stehen die TextBox_bruttogehalt und die TextBox_bruttostundenlohn zur Verfügung.
Schön wäre es, wenn sobald eine TextBox gefüllt ist, die andere TextBox für Eingaben gesperrt wird. (ich denke da an .Locked und zusätzlich eine MsgBox falls eine Eingabe versucht wird.)
Nun soll allerdings die Spalte in der Datenbankstabelle nicht leer bleiben, sondern mithilfe hinterlegter Basisdaten ausgerechnet werden.
Beispiel:
Neuer Mitarbeiter wird auf Vollzeit (174h/Monat) mit mit einem Bruttogehalt von 3600€ angestellt, dann soll beim Hinzufügen des Mitarbeiters die Spalte Bruttostundenlohn automatisch ausgefüllt werden, nämlich mit 3600 (Eingabe in TextBox_bruttogehalt) geteilt durch 174 (VLookUp -> Worksheet "Basisdaten" -> matrix_vertragliche_arbeitszeit, Spalte 4).
Andersherum natürlich auch, nämlich wenn nur der Bruttostundenlohn eingetragen wird, dann dieser Wert multipliziert mit der monatlichen Stundenanzahl der jeweiligen Vertragsart der matrix_vertragliche_arbeitszeit.
Der Gefahr bewusst, dass ihr mich aufgrund eines Denkfehlers hin in der Luft zerreißt, freue ich mich dennoch auf eure Antworten.
Danke!

Nachfolgend der Code der UserForm_neuermitarbeiter:
Code:
Private Sub CommandButton_hinzufuegen1_Click()
'Erste freie Zeile finden
Dim last As Integer
last = Worksheets("Mitarbeiterdatenbank").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Anrede
If OptionButton_weibl.Value = True Then Cells(last, 1).Value = "Frau"
If OptionButton_männl.Value = True Then Cells(last, 1).Value = "Herr"
If OptionButton_divers.Value = True Then Cells(last, 1).Value = "Divers"
'Vorname
Cells(last, 2).Value = TextBox_vorname
'Nachname
Cells(last, 3).Value = TextBox_nachname
'Mitarbeiternummer
Cells(last, 4).Value = TextBox_mitarbeiternummer
'Anmerkungen
Cells(last, 5).Value = TextBox_anmerkungen
'Betriebszugehörigkeit
Cells(last, 6).Value = ComboBox_betrieb
'Angestellt bei
If ComboBox_betrieb.Value <> "" Then
Cells(last, 7).Value = WorksheetFunction.VLookup(ComboBox_betrieb, Sheets("Basisdaten").[matrix_betriebe], 2, False)
Else
End If
'Abteilung
If OptionButton_service.Value = True Then Cells(last, 8).Value = "Service"
If OptionButton_küche.Value = True Then Cells(last, 8).Value = "Küche"
If OptionButton_sonstige.Value = True Then Cells(last, 8).Value = "Sonstiges"
'Position
Cells(last, 9).Value = ComboBox_position
'Vertragsart
Cells(last, 10).Value = ComboBox_anstellungsart
'Wochenstunden
If ComboBox_anstellungsart.Value <> "" Then
Cells(last, 11).Value = WorksheetFunction.VLookup(ComboBox_anstellungsart, Sheets("Basisdaten").[matrix_vertragliche_arbeitszeit], 3, False)
Else
End If
'Monatsstunden
If ComboBox_anstellungsart.Value <> "" Then
Cells(last, 12).Value = WorksheetFunction.VLookup(ComboBox_anstellungsart, Sheets("Basisdaten").[matrix_vertragliche_arbeitszeit], 4, False)
Else
End If
'Eintrittsdatum
Cells(last, 13).Value = TextBox_eintrittsdatum
'Befristung
Cells(last, 14).Value = TextBox_befristung
'Bruttogehalt
If TextBox.bruttostundenlohn.Value = "" Then
Cells(last, 15).Value = TextBox_bruttogehalt
Else
Cells(last, 15).Value = TextBox_bruttostundenlohn * WorksheetFunction.VLookup(ComboBox_anstellungsart, Sheets("Basisdaten").[matrix_vertragliche_arbeitszeit], 4, False)
'Bruttostundenlohn
'Urlaubstage
Cells(last, 17).Value = TextBox_urlaubstage
'Nachtzuschläge
If CheckBox_nachtzuschläge.Value = True Then
Cells(last, 18).Value = "Ja"
Else
Cells(last, 18).Value = "Nein"
End If
'Sonn/Feiertagszuschläge
If CheckBox_sonnfeiertagszuschläge.Value = True Then
Cells(last, 19).Value = "Ja"
Else
Cells(last, 19).Value = "Nein"
End If
'Telefon
Cells(last, 20).Value = TextBox_Telefon
'E-Mail
Cells(last, 21).Value = TextBox_email
'Straße
Cells(last, 22).Value = TextBox_straße
'Hausnummer
Cells(last, 23).Value = TextBox_hausnummer
'Postleitzahl
Cells(last, 24).Value = TextBox_postleitzahl
'Stadt
Cells(last, 25).Value = TextBox_stadt
'IBAN
Cells(last, 26).Value = TextBox_iban
'Bankinstitut
Cells(last, 27).Value = TextBox_bankinstitut
'BIC
Cells(last, 28).Value = TextBox_bic
'Steuernummer
Cells(last, 29).Value = TextBox_steuernummer
'Steuerklasse
Cells(last, 30).Value = TextBox_steuerklasse
'Religionsangehörigkeit
Cells(last, 31).Value = ComboBox_religion
'Gesundheitszeugnis
If CheckBox_gesundheitszeugnis.Value = True Then
Cells(last, 32).Value = "Ja"
Else
Cells(last, 32).Value = "Nein"
End If
'Krankenkasse
Cells(last, 33).Value = TextBox_krankenkasse
'Sozialversicherungsnummer
Cells(last, 34).Value = TextBox_sozialversicherungsnummer
'Eingabefenster schließen nach dem Hinzufügen
Unload UserForm_neuermitarbeiter
End Sub
Private Sub CommandButton_abbrechen1_Click()
'Eingabefenster schließen
Unload UserForm_neuermitarbeiter
End Sub
Private Sub CommandButton_abbrechen2_Click()
'Eingabefenster schließen
Unload UserForm_neuermitarbeiter
End Sub
Private Sub CommandButton_abbrechen3_Click()
'Eingabefenster schließen
Unload UserForm_neuermitarbeiter
End Sub
Private Sub CommandButton_hinzufuegen2_Click()
'Verbindung der drei "Hinzufügen" Buttons
CommandButton_hinzufuegen1_Click
End Sub
Private Sub CommandButton_hinzufuegen3_Click()
'Verbindung der drei "Hinzufügen" Buttons
CommandButton_hinzufuegen1_Click
End Sub
Private Sub Label29_Click()
End Sub
Private Sub MultiPage1_Change()
End Sub
Private Sub TextBox_eintrittsdatum_AfterUpdate()
'Datumseingabe prüfen
If TextBox_eintrittsdatum.Value = "" Then
ElseIf IsDate(TextBox_eintrittsdatum) Then TextBox_eintrittsdatum = CDate(TextBox_eintrittsdatum)
ElseIf Not IsDate(TextBox_eintrittsdatum) Then MsgBox TextBox_eintrittsdatum & " ist kein gültiges Datumsformat. (TT.MM.YYYY)"
TextBox_eintrittsdatum = vbNullString
End If
End Sub
Private Sub TextBox_befristung_AfterUpdate()
'Datumseingabe prüfen
If TextBox_befristung.Value = "" Then
ElseIf IsDate(TextBox_befristung) Then TextBox_befristung = CDate(TextBox_befristung)
ElseIf Not IsDate(TextBox_befristung) Then MsgBox TextBox_befristung & " ist kein gültiges Datumsformat. (TT.MM.YYYY)"
TextBox_befristung = vbNullString
End If
End Sub
Private Sub SpinButton_steuerklasse_Change()
'Wert von SpinButton im Textfeld anzeigen
TextBox_steuerklasse.Text = SpinButton_steuerklasse.Value
End Sub
Private Sub SpinButton_steuerklasse_Click()
'Markierung beim Klicken aufheben
CommandButton_hinzufuegen2.SetFocus
End Sub
Private Sub TextBox_steuerklasse_Change()
'Textbox mit SpinButton synchronisieren
If IsNumeric(TextBox_steuerklasse.Value) And TextBox_steuerklasse.Value >= SpinButton_steuerklasse.Min And TextBox_steuerklasse.Value <= SpinButton_steuerklasse.Max Then
'Wert zuweisen
SpinButton_steuerklasse.Value = TextBox_steuerklasse.Value
Else
'Wertbeibehaltung bei ungültiger Eingabe
TextBox_steuerklasse.Value = SpinButton_steuerklasse.Value
End If
End Sub
Private Sub UserForm_Initialize()
'Immer mit Seite 1 starten
MultiPage1.Value = 0
'OptionButton_weibl
'OptionButton_männl
'OptionButton_divers
'TextBox_vorname
'TextBox_nachname
'TextBox_mitarbeiternummer
'TextBox_straße
'TextBox_hausnummer
'TextBox_postleitzahl
'TextBox_stadt
'TextBox_iban
'TextBox_bankinstitut
'TextBox_bic
'TextBox_steuernummer
'TextBox_steuerklasse
TextBox_steuerklasse.Text = SpinButton_steuerklasse.Value
'SpinButton_steuerklasse
SpinButton_steuerklasse.Max = 6
SpinButton_steuerklasse.Min = 1
SpinButton_steuerklasse.Value = 1
'ComboBox_religion
With ComboBox_religion
.AddItem "evangelisch"
.AddItem "evangelisch-reformiert"
.AddItem "römisch-katholisch"
.AddItem "alt-katholisch"
.AddItem "jüdisch"
.AddItem "israelitisch"
.AddItem "protestantisch"
.AddItem "ohne"
End With
'TextBox_krankenkasse
'TextBox_sozialversicherungsnummer
'ComboBox_betrieb
With ComboBox_betrieb
.RowSource = "liste_betriebe"
.Style = fmStyleDropDownList
.ListRows = 7
End With
'OptionButton_küche
'OptionButton_service
'OptionButton_sonstige
'ComboBox_position
With Me.ComboBox_position
.RowSource = "liste_positionen"
.Style = fmStyleDropDownList
.ListRows = 15
End With
'TextBox_eintrittsdatum
'TextBox_befristung
'ComboBox_anstellungsart
With Me.ComboBox_anstellungsart
.RowSource = "liste_vertragsart"
.Style = fmStyleDropDownList
.ListRows = 14
End With
'TextBox_bruttogehalt
'TextBox_bruttostundenlohn
'CheckBox_nachtzuschläge
'CheckBox_sonnfeiertagszuschläge
'TextBox_urlaubstage
'TextBox_anmerkungen
'CommandButton_hinzufügen
'CommandButton_abbrechen
End Sub