Hey Leute,
folgendes habe ich vor:
Mein Größtes Problem ist jedoch folgendes:
Hier nochmal der Code um einen neuen Benutzer anzulegen, der auf meine Sub verweist:
Ich hoffe irgendwer blickt da noch nurch und kann mir helfen...
Liebe Grüße
Kathleen
folgendes habe ich vor:
- über UserForm Mitarbeitersheet erstellen und es nach dem Mitarbeiter in Sheet 1 benennen (funktioniert prima)
- Gleichzeitig zur erstellung des Mitarbeitersheet soll ein neues Workbook erstellt werden
- Workbook.Add an sich funktioniert, aber ich kann es nicht wie ich möchte benennen (Mitarbeitername & " " & Year(Date))
- Es soll nur ein Sheet eingefügt werden (klappt über Application.SheetsInNewWorkbook=1)
- Dieses Sheet soll über die Copy Methode den Gleichen Sheetinhalt wie Mitarbeitersheet haben, das einzige was übernommen wird ist jedoch ein leeres Blatt und der Mitarbeitername als Sheetname.
- Der Sheetname soll der Monatsname sein was ich über die MonthName(Month(Date)) Methode errreichen möchte.
- Dieses Sheet soll über die Copy Methode den Gleichen Sheetinhalt wie Mitarbeitersheet haben, das einzige was übernommen wird ist jedoch ein leeres Blatt und der Mitarbeitername als Sheetname.
- Ich würde das Workbook gerne ansprechen können im Code, also eine Variable als Namen vergeben. Mein Ansatz wäre über dim und set und gleichzeitig eben Workbooks.Add
- Workbook.Add an sich funktioniert, aber ich kann es nicht wie ich möchte benennen (Mitarbeitername & " " & Year(Date))
Mein Größtes Problem ist jedoch folgendes:
- Da ich nicht weiß wo der Ordner später landet und ich den Code somit vom CurDir ausgehen lassen möchte denke ich muss ich mit der FileSystem Klasse arbeiten.
- Die Sub erhält von mir den Mitarbeiternamen, der gleichzeitig der Ordnername werden soll
Visual Basic-Quellcode
- Sub neueArbeitsmappeAnlegen(ByVal Mitarbeitername As String)
- Dim NeueMappe As Object
- Set NeueMappe = Workbooks.Add
- FileSystem.MkDir (FileSystem.CurDir() & "\" & Mitarbeitername)
- FileSystem.ChDir (FileSystem.CurDir() & "\" & Mitarbeitername)
- NeueMappe.SaveAs Filename:=FileSystem.CurDir() & "\" & Mitarbeiter & Year(Date)
- End Sub
Hier nochmal der Code um einen neuen Benutzer anzulegen, der auf meine Sub verweist:
Visual Basic-Quellcode
- Private Sub cmdNeuenNutzeranlegen_Click()
- Dim i
- Dim Kennziffer As Byte
- Dim Passwort As Long
- Dim Mitarbeitername As String
- Kennziffer = lblNummer.Caption
- Passwort = 0
- Mitarbeitername = ""
- 'Benenne den Mitarbeiter
- If txtBoxMitarbeitername.Text = "Name" Then 'Wenn der Benutzer nichts eingegeben hat
- MsgBox "Geben sie den Namen des Mitarbeiters an", vbCritical 'Weise ihn darauf hin
- txtBoxMitarbeitername.SetFocus 'Setze automatisch die Auswahl auf das Textfeld
- ElseIf txtBoxMitarbeitername.Text = "" Then 'Wenn der Benutzer den Text aus dem Textfeld herausgelöscht hat
- txtBoxMitarbeitername.SetFocus 'Setze automatisch die Auswahl auf das Textfeld
- Else
- i = 2
- For i = 2 To 256
- If txtBoxMitarbeitername.Text = Sheets("Passwörter").Cells(i, 3) Then 'wenn der Text im Textfeld bereits in der Tabelle Existiert
- Select Case MsgBox("Dieser Mitarbeitername existiert bereits, möchten Sie ihn dennoch verwenden?", _
- vbYesNo, "Mitarbeitername existiert bereits!") 'Frage den Benutzer ob er dennoch diesen Namen eintragen möchte
- Case vbYes 'Wenn ihm das Bewusst ist
- Mitarbeitername = txtBoxMitarbeitername.Text 'Trage dem Namen in die Variable ein
- GoTo WeiterMitPasswort
- Case vbNo 'Wenn das nicht seine Absicht war
- txtBoxMitarbeitername.SetFocus 'Schicke ihn zurück zur Eingabe
- Exit Sub 'und beende diese Prozedur
- End Select
- ElseIf i = 256 And Not txtBoxMitarbeitername.Text = Sheets("Passwörter").Cells(i, 3) Then 'Wenn der Zähler am Ende angekommen ist und der Name auch hier nicht enthalten ist
- Mitarbeitername = txtBoxMitarbeitername.Text 'Gib der Variablen den Wert des Textfeldes
- End If
- Next
- End If
- 'Vergib ein Passwort
- WeiterMitPasswort:
- If Passwort1 = "0" Then 'Wenn das Passwort1 "0" heißt
- txtboxPasswort1.SetFocus 'Gib den Focus zurück zum Feld des ersten Passwortes
- MsgBox "Geben Sie bitte ein Passwort ein"
- Exit Sub 'Und beende diesen Prozess
- ElseIf Passwort2 = "0" Then 'Wenn das Passwortwiederholen "0" heißt
- txtboxPasswortwiederholen.SetFocus 'Gib den Focus zurück zum Feld des zweiten Passwortes
- MsgBox "Wiederholen die das Passwort bitte"
- Exit Sub 'Und beende diesen Prozess
- ElseIf txtboxPasswort1.Text = txtboxPasswortwiederholen Then 'Wenn die beiden Passwörter übereinstimmen
- For i = 2 To 256 'Gehe alle Zeilen von 2 bis 256 durch
- If txtboxPasswort1.Text = Sheets("Passwörter").Cells(i, 2) Then 'Wenn diese Zelle mit dem Passwort übereinstimmt
- MsgBox "Dieses Passwort ist leider schon vergeben", vbCritical 'Weise den Benutzer darauf hin, dass dieses Passwort bereits vergeben ist
- txtboxPasswort1.Text = 0 'Setze den Wert des Textfeldes zurück
- txtboxPasswortwiederholen.Text = 0 'Setze den Wert des Textfeldes zurück
- txtboxPasswort1.SetFocus 'Gib den Fokus zurück auf das Feld des ersten Passwortes
- Exit Sub 'Beende den Prozess
- End If
- Next i 'Wiederhole die Schleife, wenn die Bedingung nicht erfüllt wurde
- Passwort = txtboxPasswort1.Text 'Gib der Variablen diesen Wert
- End If
- Call Mitarbeiteranlegen(Mitarbeitername, Passwort, Kennziffer)
- End Sub
Ich hoffe irgendwer blickt da noch nurch und kann mir helfen...
Liebe Grüße
Kathleen
"Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!
"Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True
"Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True