Hallo liebes Forum,
ich bin neu hier und habe mich angemeldet, da ich mit einem Fehler verzweifel.
Ich habe viele Beiträge im Internet gefunden, aber keinen der mir konkret weiterhelfen konnte.
Erstmal zu dem was ich hier mit VBA Programmiere:
Es gibt eine UserForm
in der sind Comboboxen für:
Nachname
Vorname
3LC
Personalnummer
Postfach
Postfachschlüssel
Des Weiteren eine TextBox für:
Abteilung
Der Code den ich bis jetzt geschrieben habe aktiviert beim Betätigen dieser Comboboxen die Funktion .find in einem Tabellenblatt.
Soweit funktioniert der Code auch. Allerdings, wenn ich mehrere Durchläufe mache, dann kommt der Fehler:
Laufzeitfehler '1004'
Anwendungs- oder objektdefinierter Fehler
Ich habe den Verdacht, dass passiert nur, wenn die Mitarbeiterstammdatentabelle länger ist. Habe ich da nur 20 Daten drinne stehen passiert es nicht, stehen dort allerdings 500 Daten, dann passiert es.
Wenn ich über die NachnameComboBox den Wert ändere, also suche, dann erscheint der Fehler bei folgender Zeile:
Set gefunden = Mitarbeiterstammdaten.Range(NameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & NameSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.NachnameComboBox)
Ich schicke euch mal Teile meines Quellcodes:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Public Mitarbeiterstammdaten As Worksheet ' globales Datenblatt
Public StammdatenblattName As String ' globale Variable
Public TabellenendePersonaldaten As Integer
Public ErsteMitarbeiterstammdatenZeile As Byte
Public PersonalnummerSpalte As String
Public VornameSpalte As String
Public NameSpalte As String
Public LCSpalte As String
Public AbteilungSpalte As String
Public PostFachnummerSpalte As String
Public PostFachschlüsselnummerSpalte As String
Public PersonalnummerSpaltenNummer As Byte
Public VornameSpaltenNummer As Byte
Public NameSpaltenNummer As Byte
Public LCSpaltenNummer As Byte
Public AbteilungSpaltenNummer As Byte
Public PostFachnummerSpaltenNummer As Byte
Public PostFachschlüsselnummerSpaltenNummer As Byte
Public gefunden As Object
Sub globaleVariablen()
'############################################################################
'# #
'# bitte die Datenblätter an die eigenen Wünsche anpassen #
'# #
'############################################################################
StammdatenblattName = "Mitarbeiterstammdaten" ' Name des Mitarbeiterstammdatenblattes
Set Mitarbeiterstammdaten = Worksheets(StammdatenblattName) ' Arbeitsblatt für alle Personaldaten
ErsteMitarbeiterstammdatenZeile = 4 ' erste Zeile in der Mitarbeiterdaten stehen
PersonalnummerSpalte = "A" ' Spalte in der die Personalnummer steht
VornameSpalte = "B" ' Spalte in der der Vorname steht
NameSpalte = "C" ' Spalte in der der Nachname steht
LCSpalte = "D" ' Spalte in der der 3LC steht
AbteilungSpalte = "E" ' Spalte in der die Abteilung steht
PostFachnummerSpalte = "F" ' Spalte in der die Postfachnummer steht
PostFachschlüsselnummerSpalte = "G" ' Spalte in der die Postfachschlüsselnummer steht
PersonalnummerSpaltenNummer = 0 ' Spaltennummer begonnen mit 0, da es in einer Suchfunktion genutzt wird
VornameSpaltenNummer = 1 ' in der die Entfernung zur Personalnummernspalte gezählt wird
NameSpaltenNummer = 2
LCSpaltenNummer = 3
AbteilungSpaltenNummer = 4
PostFachnummerSpaltenNummer = 5
PostFachschlüsselnummerSpaltenNummer = 6
End Sub
Sub Quellen()
Call globaleVariablen ' die globalen Variablen werden gezogen
' in der folgenden Funktion wird die länge der Tabelle im Personaldatenblatt definiert
TabellenendePersonaldaten = Mitarbeiterstammdaten.Cells(Rows.Count, 1).End(xlUp).Row
' der Inhalt der PersonalnummerComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.PersonalnummerComboBox.RowSource = StammdatenblattName & "!" & PersonalnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PersonalnummerSpalte & TabellenendePersonaldaten
' der Inhalt der VornameComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.VornameComboBox.RowSource = StammdatenblattName & "!" & VornameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & VornameSpalte & TabellenendePersonaldaten
' der Inhalt der NachnameComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.NachnameComboBox.RowSource = StammdatenblattName & "!" & NameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & NameSpalte & TabellenendePersonaldaten
' der Inhalt der DreilettercodeComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.DreilettercodeComboBox.RowSource = StammdatenblattName & "!" & LCSpalte & ErsteMitarbeiterstammdatenZeile & ":" & LCSpalte & TabellenendePersonaldaten
' der Inhalt der PostfachComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.PostfachComboBox.RowSource = StammdatenblattName & "!" & PostFachnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachnummerSpalte & TabellenendePersonaldaten
' der Inhalt der PostfachschlüsselComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.PostfachschlüsselComboBox.RowSource = StammdatenblattName & "!" & PostFachschlüsselnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachschlüsselnummerSpalte & TabellenendePersonaldaten
End Sub
Sub Personalnummer()
' die Änderung in der PersonalnummerComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(PersonalnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PersonalnummerSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.PersonalnummerComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
'PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, PersonalnummerSpaltenNummer).Value ' Personalnummer von hier aus zählt die 0
PersonaldatenForm.VornameComboBox = gefunden.Offset(0, VornameSpaltenNummer).Value ' Vorname
PersonaldatenForm.NachnameComboBox = gefunden.Offset(0, NameSpaltenNummer).Value ' Nachname
PersonaldatenForm.DreilettercodeComboBox = gefunden.Offset(0, LCSpaltenNummer).Value ' 3LC
PersonaldatenForm.AbteilungTextBox = gefunden.Offset(0, AbteilungSpaltenNummer).Value ' Abteilung
PersonaldatenForm.PostfachComboBox = gefunden.Offset(0, PostFachnummerSpaltenNummer).Value ' Postfachnummer
PersonaldatenForm.PostfachschlüsselComboBox = gefunden.Offset(0, PostFachschlüsselnummerSpaltenNummer).Value ' Postfachschlüssel
'PersonaldatenForm.ErhaltenPFTextBox = gefunden.Offset(0, 6).Value ' Postfachschlüssel erhalten am
'PersonaldatenForm.ZurueckPFTextBox = gefunden.Offset(0, 7).Value ' Postfachschlüssel zurück am
End If
If PersonaldatenForm.PersonalnummerComboBox.Value = "" Then ' Wenn die PersonalnummerComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Vorname()
' die Änderung in der VornameComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(VornameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & VornameSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.VornameComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -1).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.VornameComboBox.Value = "" Then ' Wenn die VornameComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Nachname()
' die Änderung in der NachnameComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(NameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & NameSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.NachnameComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -2).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.NachnameComboBox.Value = "" Then ' Wenn die NachnameComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Dreilettercode()
' die Änderung in der DreilettercodeComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(LCSpalte & ErsteMitarbeiterstammdatenZeile & ":" & LCSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.DreilettercodeComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -3).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.DreilettercodeComboBox.Value = "" Then ' Wenn die DreilettercodeComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Postfach()
' die Änderung in der PostfachComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(PostFachnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachnummerSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.PostfachComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -5).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.PostfachComboBox.Value = "" Then ' Wenn die PostfachComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Postfachschluessel()
' die Änderung in der PersonalnummerComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(PostFachschlüsselnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachschlüsselnummerSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.PostfachschlüsselComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -5).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.PostfachschlüsselComboBox.Value = "" Then ' Wenn die PostfachschlüsselComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Felderleeren()
PersonaldatenForm.NachnameComboBox.Value = ""
PersonaldatenForm.VornameComboBox.Value = "" ' Vorname
PersonaldatenForm.DreilettercodeComboBox.Value = "" ' 3LC
PersonaldatenForm.PersonalnummerComboBox.Value = "" ' Personalnummer
PersonaldatenForm.PostfachComboBox.Value = "" ' Postfachnummer
PersonaldatenForm.PostfachschlüsselComboBox.Value = "" ' Postfachschlüssel
PersonaldatenForm.ErhaltenPFTextBox.Value = "" ' Postfachschlüssel erhalten am
PersonaldatenForm.ZurueckPFTextBox.Value = "" ' Postfachschlüssel zurück am
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich hoffe ihr könnt mit dem Code etwas anfangen und mir bei der Lösung des Problemes helfen.
Vielen Dank schonmal!
ich bin neu hier und habe mich angemeldet, da ich mit einem Fehler verzweifel.
Ich habe viele Beiträge im Internet gefunden, aber keinen der mir konkret weiterhelfen konnte.
Erstmal zu dem was ich hier mit VBA Programmiere:
Es gibt eine UserForm
in der sind Comboboxen für:
Nachname
Vorname
3LC
Personalnummer
Postfach
Postfachschlüssel
Des Weiteren eine TextBox für:
Abteilung
Der Code den ich bis jetzt geschrieben habe aktiviert beim Betätigen dieser Comboboxen die Funktion .find in einem Tabellenblatt.
Soweit funktioniert der Code auch. Allerdings, wenn ich mehrere Durchläufe mache, dann kommt der Fehler:
Laufzeitfehler '1004'
Anwendungs- oder objektdefinierter Fehler
Ich habe den Verdacht, dass passiert nur, wenn die Mitarbeiterstammdatentabelle länger ist. Habe ich da nur 20 Daten drinne stehen passiert es nicht, stehen dort allerdings 500 Daten, dann passiert es.
Wenn ich über die NachnameComboBox den Wert ändere, also suche, dann erscheint der Fehler bei folgender Zeile:
Set gefunden = Mitarbeiterstammdaten.Range(NameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & NameSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.NachnameComboBox)
Ich schicke euch mal Teile meines Quellcodes:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Public Mitarbeiterstammdaten As Worksheet ' globales Datenblatt
Public StammdatenblattName As String ' globale Variable
Public TabellenendePersonaldaten As Integer
Public ErsteMitarbeiterstammdatenZeile As Byte
Public PersonalnummerSpalte As String
Public VornameSpalte As String
Public NameSpalte As String
Public LCSpalte As String
Public AbteilungSpalte As String
Public PostFachnummerSpalte As String
Public PostFachschlüsselnummerSpalte As String
Public PersonalnummerSpaltenNummer As Byte
Public VornameSpaltenNummer As Byte
Public NameSpaltenNummer As Byte
Public LCSpaltenNummer As Byte
Public AbteilungSpaltenNummer As Byte
Public PostFachnummerSpaltenNummer As Byte
Public PostFachschlüsselnummerSpaltenNummer As Byte
Public gefunden As Object
Sub globaleVariablen()
'############################################################################
'# #
'# bitte die Datenblätter an die eigenen Wünsche anpassen #
'# #
'############################################################################
StammdatenblattName = "Mitarbeiterstammdaten" ' Name des Mitarbeiterstammdatenblattes
Set Mitarbeiterstammdaten = Worksheets(StammdatenblattName) ' Arbeitsblatt für alle Personaldaten
ErsteMitarbeiterstammdatenZeile = 4 ' erste Zeile in der Mitarbeiterdaten stehen
PersonalnummerSpalte = "A" ' Spalte in der die Personalnummer steht
VornameSpalte = "B" ' Spalte in der der Vorname steht
NameSpalte = "C" ' Spalte in der der Nachname steht
LCSpalte = "D" ' Spalte in der der 3LC steht
AbteilungSpalte = "E" ' Spalte in der die Abteilung steht
PostFachnummerSpalte = "F" ' Spalte in der die Postfachnummer steht
PostFachschlüsselnummerSpalte = "G" ' Spalte in der die Postfachschlüsselnummer steht
PersonalnummerSpaltenNummer = 0 ' Spaltennummer begonnen mit 0, da es in einer Suchfunktion genutzt wird
VornameSpaltenNummer = 1 ' in der die Entfernung zur Personalnummernspalte gezählt wird
NameSpaltenNummer = 2
LCSpaltenNummer = 3
AbteilungSpaltenNummer = 4
PostFachnummerSpaltenNummer = 5
PostFachschlüsselnummerSpaltenNummer = 6
End Sub
Sub Quellen()
Call globaleVariablen ' die globalen Variablen werden gezogen
' in der folgenden Funktion wird die länge der Tabelle im Personaldatenblatt definiert
TabellenendePersonaldaten = Mitarbeiterstammdaten.Cells(Rows.Count, 1).End(xlUp).Row
' der Inhalt der PersonalnummerComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.PersonalnummerComboBox.RowSource = StammdatenblattName & "!" & PersonalnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PersonalnummerSpalte & TabellenendePersonaldaten
' der Inhalt der VornameComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.VornameComboBox.RowSource = StammdatenblattName & "!" & VornameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & VornameSpalte & TabellenendePersonaldaten
' der Inhalt der NachnameComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.NachnameComboBox.RowSource = StammdatenblattName & "!" & NameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & NameSpalte & TabellenendePersonaldaten
' der Inhalt der DreilettercodeComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.DreilettercodeComboBox.RowSource = StammdatenblattName & "!" & LCSpalte & ErsteMitarbeiterstammdatenZeile & ":" & LCSpalte & TabellenendePersonaldaten
' der Inhalt der PostfachComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.PostfachComboBox.RowSource = StammdatenblattName & "!" & PostFachnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachnummerSpalte & TabellenendePersonaldaten
' der Inhalt der PostfachschlüsselComboBox wird aud dem Personaldatenblatt importiert
PersonaldatenForm.PostfachschlüsselComboBox.RowSource = StammdatenblattName & "!" & PostFachschlüsselnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachschlüsselnummerSpalte & TabellenendePersonaldaten
End Sub
Sub Personalnummer()
' die Änderung in der PersonalnummerComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(PersonalnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PersonalnummerSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.PersonalnummerComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
'PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, PersonalnummerSpaltenNummer).Value ' Personalnummer von hier aus zählt die 0
PersonaldatenForm.VornameComboBox = gefunden.Offset(0, VornameSpaltenNummer).Value ' Vorname
PersonaldatenForm.NachnameComboBox = gefunden.Offset(0, NameSpaltenNummer).Value ' Nachname
PersonaldatenForm.DreilettercodeComboBox = gefunden.Offset(0, LCSpaltenNummer).Value ' 3LC
PersonaldatenForm.AbteilungTextBox = gefunden.Offset(0, AbteilungSpaltenNummer).Value ' Abteilung
PersonaldatenForm.PostfachComboBox = gefunden.Offset(0, PostFachnummerSpaltenNummer).Value ' Postfachnummer
PersonaldatenForm.PostfachschlüsselComboBox = gefunden.Offset(0, PostFachschlüsselnummerSpaltenNummer).Value ' Postfachschlüssel
'PersonaldatenForm.ErhaltenPFTextBox = gefunden.Offset(0, 6).Value ' Postfachschlüssel erhalten am
'PersonaldatenForm.ZurueckPFTextBox = gefunden.Offset(0, 7).Value ' Postfachschlüssel zurück am
End If
If PersonaldatenForm.PersonalnummerComboBox.Value = "" Then ' Wenn die PersonalnummerComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Vorname()
' die Änderung in der VornameComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(VornameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & VornameSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.VornameComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -1).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.VornameComboBox.Value = "" Then ' Wenn die VornameComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Nachname()
' die Änderung in der NachnameComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(NameSpalte & ErsteMitarbeiterstammdatenZeile & ":" & NameSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.NachnameComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -2).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.NachnameComboBox.Value = "" Then ' Wenn die NachnameComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Dreilettercode()
' die Änderung in der DreilettercodeComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(LCSpalte & ErsteMitarbeiterstammdatenZeile & ":" & LCSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.DreilettercodeComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -3).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.DreilettercodeComboBox.Value = "" Then ' Wenn die DreilettercodeComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Postfach()
' die Änderung in der PostfachComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(PostFachnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachnummerSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.PostfachComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -5).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.PostfachComboBox.Value = "" Then ' Wenn die PostfachComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Postfachschluessel()
' die Änderung in der PersonalnummerComboBox wird in die anderen Textboxen übertragen
Set gefunden = Mitarbeiterstammdaten.Range(PostFachschlüsselnummerSpalte & ErsteMitarbeiterstammdatenZeile & ":" & PostFachschlüsselnummerSpalte & TabellenendePersonaldaten).Find(PersonaldatenForm.PostfachschlüsselComboBox)
If Not gefunden Is Nothing Then ' Wenn ein Wert gefunden wird, dann:
' Die Personaldaten werden vom Personaldatenblatt
' in die UserForm geschrieben
PersonaldatenForm.PersonalnummerComboBox = gefunden.Offset(0, -5).Value ' Die Personalnummer wird eingetragen um einen Bezugspunkt für die Funktion Personalnummer zu haben.
' Der erste Wert in der Klammer ist die vertikale Bewegung, der zweite Wert ist die
' horizontale Bewegung und berechnet sich immer von der gewählten Zelle zur Personalnummernzelle.
Call Personalnummer ' Die Funktion Personalnummer kann nun gestartet werden, da ein Nachname eingetragen wurde
End If
If PersonaldatenForm.PostfachschlüsselComboBox.Value = "" Then ' Wenn die PostfachschlüsselComboBox leer ist werden alle anderen Felder auch geleert
Call Felderleeren
End If
End Sub
Sub Felderleeren()
PersonaldatenForm.NachnameComboBox.Value = ""
PersonaldatenForm.VornameComboBox.Value = "" ' Vorname
PersonaldatenForm.DreilettercodeComboBox.Value = "" ' 3LC
PersonaldatenForm.PersonalnummerComboBox.Value = "" ' Personalnummer
PersonaldatenForm.PostfachComboBox.Value = "" ' Postfachnummer
PersonaldatenForm.PostfachschlüsselComboBox.Value = "" ' Postfachschlüssel
PersonaldatenForm.ErhaltenPFTextBox.Value = "" ' Postfachschlüssel erhalten am
PersonaldatenForm.ZurueckPFTextBox.Value = "" ' Postfachschlüssel zurück am
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich hoffe ihr könnt mit dem Code etwas anfangen und mir bei der Lösung des Problemes helfen.
Vielen Dank schonmal!