Wunderschönen guten Morgen zusammen!
Erstmal Danke für die vielen Beiträge von denen man viel lernen kann! Allerdings habe ich in meinem Excel- und VBAprojekt noch einige Dinge bei denen ich einfach nicht weiterkomme. Über jegliche Art von Tips und Hilfe wäre ich super dankbar!
Kurz zur Erklärung: Ich habe eine Tabelle (DB) in der Projekte mit folgenden Werten abgespeichert werden.
(ID / Kategorie / Bezeichnung / Priorität / Fälligkeit / Fertigstellung)
Die Überschriften sollen zwingend in der Tabelle in Reihe 1 stehen. Diese Tabelle wird dann per Listbox in einer UserForm angezegt, die allerlei Dinge macht.
Die erste Frage: Ich habe ein Makro aufgezeichnet, welches theoretisch in der Tabelle funktioniert. In der UserForm allerdings wird die erste Zeile nicht mitsortiert :( Die Idee hinter der sortierung ist die Tabelle zu sortieren und die Listbox dann neu mit den sortierten Werten befüllen zu lassen
Der Code zum sortieren:
'Priorität sort
Private Sub OptionButton1_Click()
'Anzahl befüllter Reihen finden
Dim r As Long
r = Sheets("DB").range("D65536").End(xlUp).Row
'Aufgezeichnetes Makro
Sheets("DB").Activate
range("D1:D" & r).Select
ActiveWorkbook.Worksheets("DB").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DB").Sort.SortFields.Add Key:=range("D1"), SortOn _
:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DB").Sort
.SetRange range("A2:G9")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'repopulate ListBox
reload
End Sub
'Fügt der Listbox die einzelnen Projekte hinzu
Public Sub reload()
Dim reloadVar As Long
reloadVar = Sheets("DB").Cells(Rows.Count, 2).End(xlUp).Row
If reloadVar > 1 Then
With UserForm1.ListBox1
.List = Worksheets("DB").range("a2:f" & reloadVar).Value
.ColumnWidths = "1.5cm;6cm;9cm;2.5cm;4cm;1cm"
End With
Else
MsgBox "Keine Daten vorhanden! Bitte einen neuen Eintrag anlege!"
UserForm2.Show
End If
End Sub
Zweite Frage: Der Eintrag Fertigstellung soll wenn möglich in % angegeben werden. Wenn ich die Zelle entsprechend formatiere wird in der Listbox ein Wert zwischen 0 und 1 angezeigt und bei Standart bekomme ich auch kein % - Zeichen hin.Dritte Frage: Ich habe eine Combobox, die mit den einzelnen Kategorien gefüllt wird. Wenn man eine Kategorie auswählt sollen nur die Projekte der entsprechenden Kategorie in der Listbox angezeigt werden. Ist es möglich das über ein If + contains = show (nur als beispiel) zu realisieren?
Private Sub ComboBox1_Change()
'find value
Dim cBox As String
cBox = ComboBox1.Value
If cBox = "" Then
'Show everything
Else
'get Kategorien
'Show only Projects with Kategorie XXX
End If
End Sub
Gerne lade ich die ganze Arbeitsmappe hoch wenn ich gefunden habe wo das möglich ist ;DVielen Dank schonmal für alle Antworten
Michi