Avatar billede JNC Seniormester
31. august 2016 - 15:44 Der er 8 kommentarer og
2 løsninger

hvorfor driller VBA koder, de eksisterende funktioner

Hej
Jeg har brugt hjælpen her inde meget.
først til formler men nu ofte VBA.
Jeg støder dog på Problemer med løsningerne.
Tit for jeg kode som løser mit Problem / spørgsmål.
Men efterfølgende finder jeg ud af efter som jeg får behov, at nogle eksisterende (genveje ctrl. .... el. generel- funktioner (fortryd osv.) forsvinder.

Hvad er nu det for noget, hvad er det der sker, er det mig der har gjort noget forkert, eller glemt noget. eller er det helt "Normalt" ?

Jeg har oplevet det senest med denne "type" -
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Avatar billede kim1a Ekspert
31. august 2016 - 19:00 #1
Når man bruger vba kan man ikke fortryde, så den går retur til før man kørte vba'en. Du skal i så fald gemme og åbne på ny.
Hvis du arbejder med en makro og skal teste løbende, kan der være en ide i at have en "moder"fane og så starte din makro med at kopiere denne over til ny og bruge denne.
Avatar billede JNC Seniormester
01. september 2016 - 07:54 #2
Hej Kim1a

Jeg kan selvfølgelig godt se logik'en i at Fortyd udgår permanent i et ark hvor man  konstant har en makro kørende.

Nu har jeg et ret "stort" opsæt, så det er ikke optimalt at skulle have "moder / kopi" ark.
Jeg er ikke sikker på jeg forstår dit løsnings-forslag ?

Kan man lave en "FORTRYD" Makro :D ?
Avatar billede kim1a Ekspert
01. september 2016 - 10:48 #3
Jeg tror det er nemmere at have en kopi af arket gemt, måske du kan sætte en save funktion op for hver event makroen kører?
Altså hvis du har en makro der f.eks. checker efter om der står A i række A når arket ændres, så kan du sætte den op til at gemme arket umiddelbart efter den checker - evt. med en dato-/tidsangivelse bagefter så du ganske vist får mange versioner af arket, men altid kan finde retur til et udgangspunkt der var ok.

En fortryd makro bliver svær, for den skal egentlig gøre nøjagtig det modsatte af hvad din makro gør.
Avatar billede JNC Seniormester
01. september 2016 - 11:09 #4
Jaaaa
min makro er en sporing af aktiv celle

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Top = ActiveCell.Top
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Left = ActiveCell.Left
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Width = ActiveCell.Width
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Height = ActiveCell.Height

ActiveSheet.Shapes.Range(Array("Rectangle 2")).Top = Cells(ActiveCell.Row, 1).Top
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Left = Cells(ActiveCell.Row, 1).Left
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Width = Cells(ActiveCell.Row, 1).Width
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Height = Cells(ActiveCell.Row, 1).Height
End Sub

men en fortryd makro skal bare give mig muligheden tilbage for at fortryde en slet / delete handling eller klip / sæt ind.. osv.
Avatar billede kim1a Ekspert
01. september 2016 - 13:22 #5
Du har nok brug for en større ekspert til at hjælpe med det.

Umiddelbart tænker jeg at du måske kunne lave makroen til at køre f.eks. ved at gemme eller en genvejstast, fremfor at køre så snart du laver en ændring i arket.
Avatar billede jkrons Professor
03. september 2016 - 11:55 #6
Jeg skal lige forstå det rigtigt. Er det kun makroen, du ikke kan fortryde, eller forsvinder Fortryd-funktionen helt fra arket?
Avatar billede jkrons Professor
03. september 2016 - 12:02 #7
Undskyld mit sidste spørgsmål, som nok er menignsløst.

Har du kørt en makro forsvinder muligheden for at fortryde, både det makroen gør, men også alle andre handlinger, du har foretaget før du afspillede makroen. At lave en "fortryd" makro vil ikke ændre dette, da du jo skal afspille denne, og så kan du alligevel ikke fortryde. Her hjælper det desværre heller ikke at lukke uden at gemme og så åbne igen, for når du lukker "glemmes" de handlinger, der er sket jo.

Det burde dog være muligt at fortryde handlinger, du har udført efter afspilningen af makroen.

Her er der nok ikke nogen løsning, da det er sådan Excel er "skruet sammen".
Avatar billede JNC Seniormester
03. september 2016 - 13:29 #8
Hej jkrons
Knappen "tilbage" eller genvejen ctrl+z forsvinder ikke :) de kan bare ikke bruges.

i mit tilfælde handler det om at jeg har en makro der konstant køre.
Når jeg vælger en celle med pil eller mussen så har jeg en makro der markere tydeligt, hvilken celle jeg er i, og i øvrigt også markere tydeligt hvilken række og kolonne. Så altså min Fortryd er konstant afskåret fordi min sidste handling altid er at køre en makro :)
Avatar billede jkrons Professor
03. september 2016 - 15:14 #9
Ja, og det kan der ikke gøres noget ved. Så snart en makro kører eller er kørt, kan der ikke fortrydes og da din makro kører på selection_change hændelsen, kører den som du siger, hver gang, du flytter markøren.

Det er simpelthen den måde Excel virker på.

Man kan lave kode, der kopierer regnearket lige inden makroen køres og så genskaber det, makroen har ændret, men undo-stakken forud for makrohandlingen vil gå tabt.
Avatar billede JNC Seniormester
05. september 2016 - 07:51 #10
Ja den er nok ikke så smart i et regneark der er åbent til at ændre i når der arbejdes :)
Men tak for forklaringerne :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester