Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

sortieren danach UF wieder aktual.

sortieren danach UF wieder aktual.
09.01.2022 16:40:36
Walter
Hallo allerseits,
ich habe eine UF, wenn ich die Tabelle sortiert habe, möchte ich das die Daten in der Listbox wieder
aktualisiert werden.
Leider klappt es nicht.
anbei mein Makro:
' sortieren Namen ---------------

Private Sub CommandButton8_Click()
Dim z As Long
ActiveSheet.Range("I5").Select
z = Range("i5").End(xlDown).Row
ActiveSheet.Range(Cells(5, 9), Cells(z, 12)).Select
ActiveWorkbook.Worksheets("Feiertage").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feiertage").Sort.SortFields.Add Key:=Range("I5"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'Order:=xlDescending,   von Z nach A
With ActiveWorkbook.Worksheets("Feiertage").Sort
.SetRange Range(Cells(5, 9), Cells(z, 12))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("I4").Select
' UserForm_Activate
'  Muster_UF.Show     'klappt nicht
End Sub
mfg walter b

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sortieren danach UF wieder aktual.
09.01.2022 17:12:37
Walter
Hallo zusammen,
anbei das Makro der Userform:

Private Sub UserForm_Initialize()
Dim lLetzte  As Long
If ListBox1.ListCount = 0 And ListBox1.ListIndex = -1 Then
Me.Caption = "    Daten erfassen, ändern, löschen."
Me.Width = 422
Me.Height = 540
Me.Left = 400
With ListBox1        ' betrifft die ListBox1
.Height = 284     ' die Höhe festlegen
.Left = 32        ' den linken Randabstand festlegen
.Top = 30         ' den oberen Randabstand festlegen
.Width = 346      ' die Breite festlegen
.Font.Size = 10   ' die Schriftgröße festlegen
.ForeColor = RGB(0, 0, 255) ' Schriftfarbe immer mit RGB
.ColumnCount = 5  ' die Anzahl der Spalten festlegen
' die Breite der Spalten festlegen
.ColumnWidths = ("4,8cm;3,0cm;2,9cm;1,4cm;0,0cm")
.Clear            ' die ListBox leeren
End With
If Tabelle17.Range("A1") = 1 Then
With Sheets("Feiertage")
ListBox1.List = .Range(.Cells(4, 9), .Cells(.Rows.Count, 9).End(xlUp)).Resize(, 4).Value     'Resize(, 1)=Spaltenanzahl
Label11.Caption = ActiveSheet.Range("i3").Value
End With
End If
End If
End Sub
gruß walter b
Anzeige
AW: sortieren danach UF wieder aktual.
09.01.2022 17:34:27
ralf_b
Wenn du nur das Tabellenblatt sortierst, dann mußt du natürlich die Liste neu zuweisen. siehe letzter Teil deines Initialize
Leider keine Reaktion
09.01.2022 18:20:55
Walter
Hallo Ralf,
leider keine Reaktion.
gruß walter b
geändert -)
09.01.2022 18:38:20
Walter
Hallo Ralf,
habe eine Lösung gefunden:
' sortieren Namen ---------------

Private Sub CommandButton8_Click()
Dim z As Long
Dim lLetzte  As Long
ActiveSheet.Unprotect (getStrPasswort)
With Worksheets("Feiertage")
lLetzte = IIf(IsEmpty(.Cells(Rows.Count, 9)), _
.Cells(Rows.Count, 12).End(xlUp).Row, Rows.Count) + 1
If lLetzte 
Danke für deine Hilfe !
gruß walter b
Anzeige
Leider Nachfrage
09.01.2022 18:52:54
Walter
Hallo,
habe ein 2. Makro für das Sortieren nach Spalte L,
leider Fehlermeldung.
Dim z As Long
ActiveSheet.Unprotect (getStrPasswort)
ActiveSheet.Range("I5").Select
z = Range("i5").End(xlDown).Row
ActiveSheet.Range(Cells(5, 9), Cells(z, 12)).Select
ActiveWorkbook.Worksheets("Feiertage").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feiertage").Sort.SortFields.Add2 Key:=Range(Cells(5, 9), Cells(z, 12)), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Feiertage").Sort
.SetRange Range(Cells(5, 9), Cells(z, 12)) ?
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
With Worksheets("Feiertage")
ListBox1.List = .Range(.Cells(4, 9), .Cells(.Rows.Count, 9).End(xlUp)).Resize(, 4).Value 'Resize(, 1)=Spaltenanzahl
ActiveSheet.Range("I4").Select
End With
End Sub
gruß walter b
Anzeige
AW: Leider Nachfrage
09.01.2022 20:46:38
ralf_b
ich verstehe nicht was das Problem ist? Das Sort hat doch funktioniert.
in welchem Context steht Range? Fehlt da vielleicht die Worksheetbezeichnung?

Range(Cells(5, 9), Cells(z, 12)) ?

Fehleranzeige...
10.01.2022 10:36:27
Walter
Guten Morgen Ralf,
With ActiveWorkbook.Worksheets("Feiertage").Sort
.SetRange Range(Cells(5, 9), Cells(z, 12))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply 'bleibt hier stehen, der Sortierbezug ist ungtültig
End With
gruß walter b
AW: Fehleranzeige...
10.01.2022 11:16:02
Luschi
Hallo Walter,
so kann das auch nicht klappen:
- mit With ActiveWorkbook.Worksheets("Feiertage").Sort
  sprichst Du ein Tabellenblatt (TB) an, das nicht unbedingt das aktive TB sein muß
- bei .SetRange Range(Cells(5, 9), Cells(z, 12))
  fehlt bei Range(...) aber der Bezug zum oben angesprochenen TB, das sortiert werden soll
  und deshalb der ungültige Sortierbezug.
Wenn ich ein Sortiermakro aufzeichne, dann kommt noch diese 2 Befehle dazu:
ActiveWorkbook.Worksheets("Feiertage").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feiertage").Sort.SortFields.Add2 Key:=Range( _
      "I5:I16"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= xlSortNormal
die bei Dir fehlen.
Gruß von Luschi
aus klein-Paris
Anzeige
Ich habe es jetzt so gelöst -)
10.01.2022 11:53:44
Walter
Guten Morgen Ralf und Luschi,
ich habe es jetzt so gelöst und funktioniert einwandfrei !

Private Sub CommandButton25_Click()
Dim z As Long
ActiveSheet.Unprotect (getStrPasswort)
ActiveSheet.Range("I5").Select
z = Range("i5").End(xlDown).Row
ActiveSheet.Range(Cells(5, 9), Cells(z, 12)).Select
'--- von Z nach  B -----
Range(Cells(5, 9), Cells(z, 12)).Sort Key1:=Range("L5"), Order1:= _
xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
With Worksheets("Feiertage")
ListBox1.List = .Range(.Cells(4, 9), .Cells(.Rows.Count, 9).End(xlUp)).Resize(, 4).Value        'Resize(, 1)=Spaltenanzahl
ActiveSheet.Range("I4").Select
End With
ActiveSheet.Range("I4").Selec
End Sub
DANKE !!!
schönen und gesunden Montag !
gruß walter b
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige