19.04.2017, 21:23
Hallo Community,
für meine Zeiterfassung (Tagesarbeitszettel) habe ich eine UserForm mit mehreren Comboboxen.
Die aufgelisteten ´Werte fülle ich momentan mittels .AddItem
Gerne würde ich diese per Range und Namenseditor abfragen lassen.
Bei einer einzigen Combobox funktioniert das. Sobald ich eine weitere hinzufüge, bekomme ich den Fehlercode 1004.
Meine Musterdatei (ohne Makros) ist anhängend. Für alle anderen hier der
für meine Zeiterfassung (Tagesarbeitszettel) habe ich eine UserForm mit mehreren Comboboxen.
Die aufgelisteten ´Werte fülle ich momentan mittels .AddItem
Gerne würde ich diese per Range und Namenseditor abfragen lassen.
Bei einer einzigen Combobox funktioniert das. Sobald ich eine weitere hinzufüge, bekomme ich den Fehlercode 1004.
Meine Musterdatei (ohne Makros) ist anhängend. Für alle anderen hier der
Code:
Private Sub cmdAbbrechen_Click()
'Schließt das Formular
Unload frmTageszettel
End Sub
Private Sub cmdEingabe_Click()
'Fügt die eingetragenen Werte ins Tabellenblatt und schließt das Formular
Dim intErsteLeereZeile As Long
With ActiveSheet
intErsteLeereZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(intErsteLeereZeile, 1).Value = Me.cboMonteur.Value
.Cells(intErsteLeereZeile, 2).Value = CDate(Me.txtDatum.Value)
.Cells(intErsteLeereZeile, 3).Value = Me.cboKuerzel.Value
.Cells(intErsteLeereZeile, 4).Value = Me.cboKunde.Value
.Cells(intErsteLeereZeile, 5).Value = Me.txtAuftragsnummer.Value
.Cells(intErsteLeereZeile, 6).Value = Me.cboKategorien.Value
.Cells(intErsteLeereZeile, 7).Value = Me.txtZeit.Value
End With
Unload frmTageszettel
End Sub
Private Sub UserForm_Initialize()
'Werte beim Aufruf des Formulars eintragen. Formular initialisieren
Dim rngKategorien As Range
Dim rngKunde As Range
For Each rngKunde In Range("Kunde")
With Me.cboKunde
.AddItem rngKunde.Value
.List(.ListCount - 1, 1) = rngKunde.Offset(0, 1).Value
End With
Next rngKunde
' For Each rngKategorien In Range("Kategorien")
' With Me.cboKategorien
' .AddItem rngKategorien.Value
' .List(.ListCount - 1, 1) = rngKategorien.Offset(0, 1).Value
' End With
' Next rngKategorien
With Me
.txtDatum.Value = Date
.txtZeit.Value = 1
' .cboKuerzel.List = Range("Kuerzel")
' .cboMonteur.List = Range("Monteur")
.cboKunde.List = Range("Kunde").Value
' .cboKategorien.List = Range("Kategorien").Value
With .cboKuerzel
.AddItem "FAB"
.AddItem "BTB"
End With
With .cboMonteur
.AddItem "MB"
.AddItem "KT"
End With
With .cboKategorien
.AddItem "Montage"
.AddItem "Restarbeiten"
.AddItem "Restarbeiten 3"
.AddItem "Restarbeiten 4"
.AddItem "Rekla1"
.AddItem "Rekla2"
.AddItem "Rekla3"
.AddItem "Rekla4"
.AddItem "Lager"
End With
End With
' For Each rngKategorien In Range("Kategorien")
' With Me.cboKategorien
' .AddItem rngKategorien.Value
'Jede Zelle im Bereich Kategorien wird nach und nach über AddItem ergänzt
' .List(.ListCount - 1, 1) = rngKategorien.Offset(0, 1).Value
'Gleichzeitig im Eigenschaftenfenster darauf achten, dass dieser Combobox eine weitere Spalte zugewiesen wird
' End With
' Next rngKategorien
'Die Schleife wird so lange durchlaufen, wie es Zellen im Bereich Kategorien gibt
End Sub
'############################################################
' Suchen, ob "Bezeichnung" bereits in Erfassen! vorhanden ist
' Vergleich -> Monteur mit Auftragsnummer und Bezeichnung
' F E H L E R
'############################################################
'Sub suchen()
' Dim ws As Worksheet
' Dim Kategorien As String
' Dim c As Range
' Set ws = ActiveSheet
' Set c = ws.Range("F:F").Find(Kategorien, LookIn:=xlValues, LookAt:=xlWhole)
' If Not c Is Nothing Then
' MsgBox "Wert ist vorhanden in der Zeile " & c.Row
' Else
' '' Wenn Wert nicht vorhanden, eintragen
' End If
'End Sub