knodl(24.4.2023 17:17)citovat#054853 
Spis je otazka, proc potrebujeme manipulovat s daty na zamcenem listu. Asi by to chtelo lepsi popis toho, co mate a ceho potrebujete docilit - mozna vase reseni neni to nejlepsi...

Pokud to zamykáš ručně, tak i když tam je fajfka pro možnost Seřadit, tak to po zamčení řadit nejde ani podle jednoduchých kritérií, natož podle složitějších.
Ale pokud bys to chtěl řadit kódem, tak není problém. Dokonce to ani nemusíš odemykat, pokud to bude zamčeno kódem s atributem UserInterfaceOnly:=True. Třeba takhle:
ws.Protect GetHSL1, AllowFiltering:=True, UserInterfaceOnly:=True

Děkuji za pomoc. Tabulka je zamčená a někteří uživatelé mají oprávnění upravovat určité sloupce, kde potřebují občas i řadit dle abecedy nebo data. Kód vyzkouším. Děkuji moc

To nebyl kód na řazení, ale na zamčení listu tak, aby ho měl uživatel zamčený, ale pro kód aby zamčený nebyl. To getHSL1 je funkce, která vrací heslo, aby to o něco ztížilo hacknutí, takže místo toho tam musíš zadat heslo kterým se list odemyká. Ale samotný kód pro řazení je jiný, např. takhle
Sub TestRazeni()
Dim ws As Worksheet
Dim rOblast As Range
'zadefinuj zkratku pro list
Set ws = Worksheets("seznam")
'pokud tam je filtr, tak ho odepni
If ws.FilterMode Then ws.ShowAllData
'zadefinuj tabulku
Set rOblast = ws.Range("B2").CurrentRegion
'vzestupne razeni podle sloupce B a v druhem levelu sestupne podle sloupce D
rOblast.Sort Key1:=ws.Range("B2"), Order1:=xlAscending, Key2:=ws.Range("D2"), Order1:=xlDescending, Header:=xlYes
End Sub