Avatar billede degnens Mester
14. december 2005 - 14:36 Der er 8 kommentarer og
1 løsning

Køre automatisk makro ved ændring

Jeg har lavet en makro, der kopierer data fra felt B7 i Ark1 til et tilsvarende felt i Ark2. Makroen fungerer fint, når jeg har lagt den til en knap. Men jeg ville gerne have, at den køre automatisk når man indtaster ændringer i B7 - således at værdien altid er opdateret i det tilsvarende felt på Ark2. Altså gøre tryk på knappen overflødig.
14. december 2005 - 14:42 #1
Højreklik på ark-fanen og vælg "Vis koder" og indsæt følgende

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B7")) Is Nothing Then
        ' skriv navnet på din makro her
    End If
End Sub
Avatar billede degnens Mester
14. december 2005 - 15:17 #2
Jeg fik en fejlmeddelelse: ambiguos name detacted: Worksheet_change. Jeg forstår det sådan, at det er fordi der i forvejen er en funktion på arket med samme navn. Jeg rettede derfor Worksheet_Change til Start_Change. Derefter sker der ingenting, når jeg redigerer B7? Min makro hedder Redigerstart. Er der nogen bestemt måde jeg skal markere navnet på, så det genkendes som et makronavn, måske?
14. december 2005 - 15:19 #3
Rigtigt - There can be only ONE (highlander) Worksheet_Change, men den kan godt have flere del elementer i sig, så smid koden

    If Not Intersect(Target, Range("B7")) Is Nothing Then
        ' skriv navnet på din makro her
    End If

ind i din nuværende Worksheet_Change
14. december 2005 - 15:20 #4
Worksheet_Change ER den makro der starter når du ændre noget i arket, og denne linie "If Not Intersect(Target, Range("B7")) Is Nothing Then" sikre at det indenfor IF-sætningen kun bliver kørt, hvis ændringen er sket i celle B7
Avatar billede degnens Mester
14. december 2005 - 15:32 #5
Nåeh, sådan! Man bliver jo lidt klogere for hver dag. Jeg har aldrig fået lært det med Visual Basic, så det er et fantastisk held, at der er noget, som hedder Eksperten. Nu virker virker det perfekt. Jeg skulle lige prøve mig frem, hvor det præcist var, jeg skulle sætte den ind, da der var flere if-sætninger. Min endelige Worksheet_Change makro ser således ud:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("D7:D63")) Is Nothing Then
If Not Target.Offset(1, -2) <> "" Then
    Target.Offset(1, -2) = Time
    Target.Offset(1, 0).Select
End If
End If
If Not Intersect(Target, Range("B7")) Is Nothing Then
        Redigerstart
End If
End Sub

Tak for hjælpen og glædelig jul.
14. december 2005 - 15:35 #6
Smiler - velbekomme - der er flere lege ting her http://www.smartoffice.dk/tips/LibraryIndex.asp?App=All bla. finder du under Guider lidt start haløjsa omkring VBA - miljø og makrobåndoptager - hvis det kan hjælpe dig igang.
Avatar billede degnens Mester
14. december 2005 - 15:37 #7
Tak for det. Det kan være jeg får tid at kigge lidt på det i juleferien. Jeg har hidtil klaret mig med makrooptageren i Excel, men de skal som regel redigeres noget til, så det ville være rigtig rart at vide, hvad det var man gjorde...
14. december 2005 - 15:43 #8
smiler - det fortæller guiderne dig nok ikke - måske kan du nå at ønske dig noget litteratur...!
Avatar billede degnens Mester
15. december 2005 - 10:47 #9
Nåeh ja, det kan jeg godt se, nu jeg tjekkede linket ud. Men der var jo mange gode fif - så det tager jeg som lidt bonusmateriale, nu det er jul. Tak for hjælpen endnu engang. Dette var til stor hjælp for mange her på kontoret til at gøre næste års arbejdstidsregistrering endnu nemmere.
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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