Finns det något sätt att hindra en användare att ta bort ett visst blad i en arbetsbok via VBA? Tja... just ta bort är väl tveksamt... I sheet-egenskapen Visible kan du kan välja alternativ 2- xlSheetVeryHidden. Då kan inte en användare se bladet via det normala Excel-programfönstret, inte heller ta fram det via menyn Format|Blad|Ta fram. Om du sedan skyddar projektet via VBA-editorn|Egenskaper för projekt fliken Skydd så skall det mycket till för att en användare fibblar bort ditt kalkylblad. Jo, det är klart att man kan göra så. Men jag tyckte att det verkade som att bladet skulle vara synligt och ändå inte gå att ta bort. Om det är direkt nödvändigt för applikationen - så där sjukt nödvändigt, så skulle väl i princip något i stil med detta vara möjligt:Skydda blad
/MiZSv: Skydda blad
Du kan dölja bladet, så går det inte att ta bort utan besvär.
Eller så kan du låsa arbetsboken, men då kan man inte ta bort något blad alls.
Det är möjligt att det finns någon egenskap för ark som gör något i den stilen, men jag känner inte till något. Du kan kolla genom att gå in i VB-editorn; ALT+F11, trycka fram ditt sheet i vänsterkolumnen, ta fram egenskaperna för just det sheetet och kolla på det.Sv: Skydda blad
Sv:Skydda blad
Sv:Skydda blad
1. Vi kallar det arket du alltid vill visa för "X".
2. Sen gör du det VeryHidden enligt ovan.
3. Sen skapar du ett nytt ark - "Y".
4. Om du har saker som ska peka in i arket så gör du det till "X".
5. Sen gör du en kopia av "X" till "Y".
Just nu har du ett X som man inte kan se, och ett Y som man både kan se och ta bort. Principen är då att du ser till så att så fort som Y tas bort, så skapar du en ny kopia av X som du kallar Y. Exakt hur du kopierar detta beror ju på. Samma sak med i vilket tillfälle det sker. Det skulle kunna vara vid Calculate, Worksheet_Change, Workbook_Change, eller något i den stilen, det får du expreimentera fram.
Men i princip så kan du alltså lösa det (väldigt fult) om det är nödvändigt.