03. oktober 2001 - 14:10Der er
12 kommentarer og 1 løsning
Sortering af beskyttet ark i Excel
Jeg skal distribuere et regneark til et antal brugere, som skal indtaste deres egne data i arket. Af forskellige grunde er arkets indhold nødt til at være beskyttet med en adgangskode, som brugerne ikke kender, men samtidig skal brugerne kunne sortere rækkerne efter sorteringskriterier, som de frit skal kunne vælge selv. Problemet er i første omgang, at beskyttelsen af arket umiddelbart forhindrer adgangen til Excels sorteringsfunktion, også selv om der kun skal sorteres på celler, som ikke er låst. Jeg tænker mig, at man kan skrive en makro, som først fjerner beskyttelsen, dernæst præsenterer en inputbox til indtastning af sorteringskriterier (gerne/helst Excels egen - i hvert fald nødig med færre kriterier) og endelig beskytter arket igen. Men hvordan skal den se ud - og kan man forhindre brugerne i at se adgangskoden i VBA-scriptet? Eller er der en helt anden og måske enklere løsning på problemet? PS: Det er min debut som spørger - er jeg for fedtet med pointene?
Password ligges på koden i VBA editoren via Tools/VBA-project propreties underfanebladet Protection.
Den nemmeste måde at lure hvordan en makro skal se (i grundtræk) er ved at starte båndoptageren - udføre handlingen - stoppe båndoptageren, og lure koden. Evt. rette den lidt til.
kmlo >> Jamen, velkommen til Eksperten. Jeg synes 30 points er rimeligt nok for et spørgsmål af denne type - men hvis du ikke får den respons, du havde håbet på, kan du altid afsætte flere points ved at bruge linket ude i venstre side.
Jeg takker for tippet om beskyttelse af VBA-koden, men i øvrigt skal jeg vist uddybe hovedproblemet lidt: Det er ingen sag at lave en makro som 1) fjerner arkbeskyttelsen, 2) sorterer efter kriterier, som jeg selv koder i makroen, og 3) beskytter arket igen. Den kan f.eks. se sådan ud (med sortering af række 5-10 efter kolonne A (stigende) og dernæst kolonne B (faldende) samt adgangskoden \"1\"): ActiveSheet.Unprotect Password:=\"1\" Rows(\"5:10\").Select Selection.Sort Key1:=Range(\"A5\"), Order1:=xlAscending, Key2:=Range(\"B5\") _ , Order2:=xlDescending ActiveSheet.Protect Password:=\"1\" Men hvis brugeren selv skal vælge sorteringskriterierne, hvad gør man så? Jeg kunne sikkert indsætte 6 på hinanden følgende inputboxe med tilknyttede variable, hvor brugeren skal indtaste 3 kolonnebogstaver og 3 sorteringsrækkefølger, og så bruge variabelværdierne i VBA-koden, men det virker meget gumpetungt og brugerfjendtligt. Findes der ikke noget smartere, som f.eks. hvis man kunne afbryde makroen, når Excels egen sorterings-dialogbox venter på input (det kan man måske også, men hvordan?). Eller en helt tredie slags løsning - blot brugeren kan få lov at sortere ulåste data i et beskyttet ark? Fint for mig med \"arbejdssvar\", jeg mangler \"bare lige\" det rigtige spor at forfølge! PS: Kan man vente med at afvise/acceptere/give points, eller skal man gøre det løbende?
Det har du ret i flemming, men til gengæld ville det være noget mere brugervenligt. Desuden er man så heller ikke bundet af de få kriterier som der er mulighed for i standard dialogboksen.
Men ok, det ligger vist ud over 30 point grænsen ....
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.