Just nu i M3-nätverket
Gå till innehåll

Ta bort sortera-alternativen under autofilterpilar


Kalle S

Rekommendera Poster

Jag har ett exceldokument där användarna filtrerar en massa kolumner hela tiden, och eftersom sortera stigande och sortera fallande finns överst råkar folk ibland sortera all info efter ngt som det inte alls ska vara sorterat efter.

 

Så jag skulle då vilja plocka bort sortera-alternativen när man trycker på autofilterpilar men har ingen aning om hur jag ska lösa det. Hjälp?

 

Alternativet skulle vara att skriva ett makro som sorterar allt efter den kolumnen infon ska vara sorterad efter, men då vill jag ju att det makrot ska triggas av just en sortering, vilket jag inte heller har lyckats lösa...

 

Länk till kommentar
Dela på andra webbplatser

Jag hittar bara den funktionen i Excel 2007 få jag antar att det är den versionen du använder?

 

Men men, lösningen är sig lik oavsett version av Excel

Skydda bladet! Tillåt Autofilter med EJ sortering.

 

Svårare än så är det inte. Valen finns kvar men inget händer. Testa och se om det duger.

 

Alternativet är väl annars att låsa bladet och ersätta, som du säger, manuella autofiltret med några VBA-kontroller som styr filtreringen.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Nä det är 2003:an jag använder, men som du skriver funkade det ju där med.

 

Tack så mkt för hjälpen! Oerhört mkt smidigare lösning än jag hade förväntat mig...

 

Länk till kommentar
Dela på andra webbplatser

Ahh, det alternativet kom kanske in när begreppet tabell introducerades i 2003 års upplaga av Excel.

 

Har hoppat över den versionen själv.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Upptäckte nu att allt inte funkar som det ska när jag skyddar bladet. =(

 

Jag har bl.a. en vba-snutt som körs varje gång ngt filter ändras, och med bladet skyddat stoppar det på:

 

d = ActiveSheet.Range("A13").CurrentRegion.Rows.Count + 12

 

Har markerat att användaren får göra allt utom sortera, men det verkar som att skyddet påverkar mer än sorteringen?

 

Länk till kommentar
Dela på andra webbplatser

Stäng av och sätt på skyddet

 

ActiveSheet.Protected = False

'bla bla bla din kod

ActiveSheet.Protected = True

 

och, om behov finnes, lek med:

ActiveSheet.Protect AllowSorting:=True

 

 

Länk till kommentar
Dela på andra webbplatser

Samt - byt gärna ut ActiveSheet mot en lite säkrare adressering. Om det är kod som ska gå att köra över flera blad se till att den när den initieras får som inargument vilket blad den ska arbeta mot. Om det är kod som körs på ett blad använd Me-referensen. Om koden enbart ska köras på ett blad men i en modul använd VBA-bladnamnet.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Ok, nu är jag ju en bra bit på vägen.

 

Det blev:

 

ActiveSheet.Unprotect

Kod

ActiveSheet.Protect och en massa AllowBLABLABLA:=true.

 

Då funkar det mesta, men att Visa Alla funkar inte. Varken genom Data - Filter - Visa Alla eller genom ActiveSheet.ShowAllData.

 

Jag har ActiveSheet.ShowAllData på flera ställen, så det skulle ju vara guld om det kunde funka.

 

Det har väl inte att göra med att jag inte har kommit så långt att jag har bytt ut ActiveSheet? All kod är för övrigt sådan som ska kunna köras på flera blad, skapar ett nytt varje månad. Hur väljer jag vilket blad koden ska köra mot utan att använda activesheet när koden nu ska gå att köra på flera blad?

 

Länk till kommentar
Dela på andra webbplatser

hmm, Var tusan fick jag Protected ifrån?

 

Hursomhelst. Tittar man på webben så verkar protect helt enkelt slå ut "visa alla". oavsett vad man kryssar i :-(

 

Det du kan göra är att lägga till "UserInterfaceOnly" i din protect

ActiveSheet.Protect  UserInterfaceOnly:=True,  AllowSorting:=True, bla 

Då gäller protecten bara för användarna. Inte för din VBA-kod. Dvs du kan köra ActiveSheet.ShowAllData i makron. Men menyvarianten av "visa alla" verkar vara borta (användaren kan fortfarande köra "alla" för enskilda kolumner)

 

Kolla i hjälpen "UserInterfaceOnly:=True" sparas inte med arbetsboken. Du kan bli tvungen att köra den "i onödan" bara för att vara säker på att det gäller.

 

Länk till kommentar
Dela på andra webbplatser

Fast om man manuellt satt kriterierna en gång så brukar man inte behöva speca dem i koden, Excel brukar minnas. Men å andra sidan skadar det inte alls att vara exakt.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...