01. september 2004 - 11:20Der er
11 kommentarer og 1 løsning
hjælp mod #ref , når end-user sletter celler som bruges i formler
Hejsa,
Jeg har et seriøst problem, error-handling (som alle andre end mig mestrer til fuldkommenhed) ...!?! :-)
Min kode er ikke så robust, så den kan holde til at en bruger sletter en række data, når denne række er brugt til formler på et andet ark. Hvad gør jeg.
Situation: STORT regneark (20 Mb, 75 sheets) indeholder et væld af formler, der håndteres af makroer.
24 af arkene hænger sammen parvis, således at ét ark er et import-ark fra anden datakilde, og dertil hører en "formel-ark", der validerer rækkerne på import-arket, rækkevis med vlookup mv. og slutteligt, når formlerne er regnet igennem, fjernes formlerne og værdierne sættes ind, for at speede arbejdet op i dagligdagen.
Jeg har lavet en auto_calculate makro der pr. formel-arket - eller på alle formelark enkeltvis, analyserer den første formel i række 2, der refererer til et andet ark, og går over på det ark for at se, hvor mange linjer der er i datakilde-arket.
Problemet er, at mine brugere (på trods af noter, henstillinger og venlige ord) meget gerne vil slette linjerne på datakilde-arket på den hårde måde, dvs marker, højreklik, delete. Derved står jeg med nogle #REF i en masse formler, som får min makro-kode til at stejle.
Mit mål er: Kan jeg komme brugeren i forkøbet. Det kan ikke lade sig gøre at låse rækkerne, da brugeren skal have mulighed for at "clear content", men omvendt vil jeg gerne undgå dette.
Min tanke var: Når dette ark åbnes, så lægges der kode ind før "save", der løber arket igennem og leder efter #REF formler. Hvis den finder en #REF formel, spørges brugeren om man virkelig ønsker at gemme under de givne vilkår. Derved kan brugeren få at vide at man er kommet til at slette noget - lukke arket uden at gemme, og åbne det igen, for at lave opgaven rigtigt. Det er en høker-metode, men hvad gør man, når brugeren har indarbejdet en forkærlighed for højreklik-->delete...?
sjap - tak for dit bud - men som jeg skrev midtvejs - "det kan ikke lade sig gøre at låse rækkerne, da brugeren netop skal have mulighed for at rydde indholdet"
Jeg er nødt til at finde en anden løsning end at låse rækkerne...
Kan du ikke blot lave låsen i en tom kolonne "langt ude til højre". Derved vil alle de celler du bruger, fungere normalt, men det er ikke muligt at fjerne rækken. Nåh ja, der vil jo så stadig være et problem, hvis kun en enkelt celle slettes og ikke hele rækken.
En tanke: Hvis du "opbevarer" din kode i et skjult, beskyttet ark, som dine brugere ikke kan komme til, kunne du redde din kode med et eller andet a la: HVIS celle i brugerark="";oprindelig formel;brugers indtastning. Men det bliver vel for bøvlet, hvis du skal ha' 75 "skygge-ark"?
Eller måske bare en beskyttet, evt. skjult kolonne med HVIS celle i bruger-kolonne="";oprindelig formel;brugers indtastning.
s kjael - jeg vil gerne prøve at sætte mig yderligere ind i "lås celler" for det er muligt at der er noget dér som jeg ikke lige kan overskue. Generelt skal der være fuld adgang til alle 73 ark (talte lige efter) plus alle nye ark som makroer laver som output af data-analysen. Derfor skal jeg være helt sikker på at det er nemt at håndtere. Jeg har også overvejet en "lås ark op/i" knap på "main page" men igen ikke særlig brugervenligt.
hcars - det er næsten umuligt at opbevare formler i kopier. Problemstillingen lidt dybere er: På hvert formel-ark er én linje med formler. Denne linje vil ændre sig over tiden, nye kolonner vil komme til, formlerne vil blive modificeret af brugere efterhånden som vores indsigt i masterdata ændres. Dermed kan man jo selvfølgelig argumentere at hvis man er kyndig nok til at må ændre i formlerne, så kan man også bare genskabe formlerne, hvis man sletter en række - men... Jeg forlader firmaet her om kort tid (har sagt op), og vil gerne aflevere produktet rimelig robust. låsning af celler er en udvej jeg håber at undgå med mindre det er enklere at håndtere end jeg umiddelbart ser det. En celle langt ude som er låst er også en mulighed men ikke helt nok, sjap, netop som du selv påpeger.
Tak for jeres input - lad os lige se, om der er flere ideer.
Hvilken version af Excel bruger du? Jeg roder selv med en gammel 97'er, men jeg mener at du i nyere versioner faktisk kan markere, at beskyttelsen inkludere beskyttelse med sletning af rækker eller kolonner.
mr.handstand -> Prøv eventuelt lige at slå beskyttelsen til. Så vidt jeg kan se, så kan du faktisk slet ikke slette celler, når beskyttelsen er slået til (i min oldgamle version). Så du skal sådan set blot lige have markeret de celler som brugeren må ændre i.
Kære sjap og bak - tiden går, og spørgsmålet har været parkeret længe. Hvis I / én af jer svarer inden for et par dage får I pointene for jeres indsats så vi kan få lukket spørgsmålet.
Jeg nåede ikke at løse problemet før jeg forlod virksomheden, så status er desværre ukendt ift løsningsmodellerne.
Tjah, jeg har da også helt glemt, hvad det drejer sig om ;0) Går ud fra at hr. bak også lægger et svar :0)
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.