da ich am Sonntag leider nichts besseres zu tun hab, als ein meine VBA Kenntnisse zu verbessern, würde ich Euch gerne um Hilfe bitten. :-)
Aufgabe: Excel-Tabelle über eine UserForm zu befüllen.
Es geht um die folgenden drei Werte.
1. Projektnummer
2. Projektbezeichnung
3. Projektordner
Problem 1: Wert 1 und 2 konnte ich über ComboBox erfassen und in meine Tabelle eintragen. Nur mit dem Projektordner hab ich so meine Probleme.
Ziel: Projektordner abfragen in ListBox1, Pfad in Userform anzeigen und anschließend in Tabelle eintragen.
Den Code zur Ordnerabfrage habe ich aus:
https://www.herber.de/forum/archiv/1740to1744/1742727_Userform_Dateipfad_suche.html#1742727
MsgBox zeigt den gewählten Pfad an aber ich bekomme es nicht hin, dass er in die ListBox1 übernommen und dann in meine Tabelle geschrieben wird.
Problem 2: Ich würde gerne, dass nach der Eingabe alle Felder der UserFrom geleert werden und der Anwender die drei Werte eingetragen muss, um die UserForm mit dem Button Eingabe zu beenden.
Das ist mein Code bisher:
Private Sub UserForm_Initialize()
'Projektnummer
'Projektbezeichnung
'Projektordner
Dim lngZeileMax As Long
lngZeileMax = Tabelle3.UsedRange.Rows.Count
With Me.BoxProNum
.RowSource = "Projektdaten!A2:A" & lngZeileMax ' Quelle angeben"
.Style = fmStyleDropDownList
.ListIndex = 0
.ListRows = 5
.Font.Bold = True
.ForeColor = RGB(0, 0, 255)
End With
With Me.BoxProBez
.RowSource = "Projektdaten!B2:B" & lngZeileMax ' Quelle angeben"
.Style = fmStyleDropDownList
.ListIndex = 0
.ListRows = 5
.Font.Bold = True
.ForeColor = RGB(0, 0, 255)
End With
End Sub
Private Sub ButtonAbbrechen_Click()
Unload Me
End Sub
Private Sub ButtonEingabe_Click()
Dim intNfZ As Integer 'Nächste freie Zeile
intNfZ = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
With ActiveSheet
If intNfZ = 2 Then .Cells(intNfZ, 1).Value = 1 Else: .Cells(intNfZ, 1).Value = .Cells( _
intNfZ - 1, 1).Value + 1
.Cells(intNfZ, 2).Value = Application.UserName
.Cells(intNfZ, 3).Value = Date
.Cells(intNfZ, 5).Value = BoxProNum
.Cells(intNfZ, 6).Value = BoxProBez
.Cells(intNfZ, 7).Value = ListBox1
End With
Unload Me
End Sub
Private Sub ListBox1_enter()
With Me.ListBox1
Dim Dlg As FileDialog
Dim Startpfad As String, Pfad
Startpfad = "Z:\Ordner\" 'oder = ThisWorkbook.Path
Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
With Dlg
.InitialFileName = Startpfad 'Welches Verzeichnis soll voreingestellt sein
End With
If Dlg.Show = True Then
Pfad = Dlg.SelectedItems(1)
End If
End With
End Sub
Danke und GrußBasti