15. marts 2005 - 18:54Der er
24 kommentarer og 1 løsning
Hva' dælen er der galt med den makro
Idéen med denne makro er at den skal kopier cellerne fra et ark til et andet, hvorefter den skal indsætte de værdier jeg beder den om, i de respektive celler. Sluttelig skal makroen, ved næste afspilling gentage proceduren et par rækker længere nede. Alt dette skal skal ske når jeg trykker på en knap, der er linket til makroen. Men makroen kan ikke udføres og ved debugging kommer den her meddelse, (ActiveSheet.Paste stopper makroen):
Sub Makro7() ' ' Makro7 Makro ' Makro indspillet 15-03-2005 af Edb '
Vent lidt, så skal jeg prøve at fixe resten også, men jeg ar lige et spørgsmål først: Er der nogen speciel grund til at du har brugt Offset? Så vidt jeg kan se, så er det eneste at denne her gør
ActiveCell.Offset(23, 0).Range("A1").Select
at flytte markøren til celle A24. Det gør den hver gang, så kan man vel ligeså godt skrive A24 - eller hva'?
Jeg indspillede makroen, gennem excel's egen indspilling. Så jeg aner ikke hvad Offset er (men jeg kan da gennemskue det andre kommandoer)... :) Hmm måske skal jeg lærer noget visual basic programmering...?
Jeg er dog ikke sikker på at det hele er med, for hvis jeg ellers har læst din kode korrekt, så gør den følgende
Kopier fra MasterSkabelon!A1:G22 til Dokumentation!A9:G30 Kopier fra Indtast!A1 til Dokumentation!A1 Kopier fra Indtast!A1:B5 til Dokumentation!A1:B5 Kopier fra Indtast!A1:B5 til Dokumentation!A1:B5
Sådan læser jeg det (og det kan jo altså sagtens være forkert), men som du kan se, så er de tre sidste linier ret ens, og det er det, der får mig til at tvivle.
Ja den var der næsten, men du skal også lige vide hvordan og hvad jeg har helt præcist i tankerne. MEN efter at have rettet lidt til, så passer den! :) I hvert fald noget af vejen. Der er nogen felter der også skal med. Det kan vel egentlig klares ved at bruge samme fremgangsmåde som den du har lavet? Der er så lige afslutning, som skal passe med at makroen starter et par linier under, hvor den sluttede. Altså en relativ cirkulering (tror jeg nok den hedder).
Den nederste linie: Indtast!A1:B5 til Dokumentation!A1:B5 er ikke korrekt; men: Indtast!B13:C17 til Dokumentation!B13:C17. Når den så er færdig med at kopier, skal der kopieres 7 rækker længere nede. Altså den starter i A(x+23). Så det passer med at den slutter i A24, første gang, men næste gang skal den slutte i A24+7, osv.
Jeg har ikke helt forstået, hvad det er du vil, men jeg har lavet en, der er næsten identisk med dit udgangspunkt, og som i hvert tilfælde kan afvikles på min PC uden problemer.
Jeg tror umiddelbart det er den sikreste måde at gøre det på, da det ellers er lidt besværligt at overskue offset-funktionen når det hele tiden flyttes mellem arkene.
Har prøvet dem alle 3. De kører ok, de kopier den skabelon fra MasterSkabelon over som den skal (istedet for at havne i A9, skal den havne i A1; har selv rettet den til det). Efter det går der lidt kluder i det. Helt præcis skal makroen gøre som følger:
1. Kopier skabeloen MasterSkabelon!A1:G22 til Dokumentation!A1 2. Kopier værdien fra Indtast!B2 til Dokumentation!B1 3. Kopier værdierne fra Indtast!B4:C8 til Dokumentaion!B3:C7 4. Kopier værdierne fra Indtast!B14:C18 til Dokumentation!B13:C17 5. Derefter skal makroen gøres klar til, at næste gang jeg aktiverer den, skal den gøre samme proces. Men denne gang skal den kopier MasterSkabelon!A1:G22 til Dokumentation!A24, også fremdeles. Håber at det klare lidt mere op på hvad det er jeg har i tankerne. Men forløbig tak, du er til stor hjælp. :)
hellfishdk Det er MEGET klart, og det tror jeg godt jeg kan fixe. Som sædvanligt har jeg dog lige et opklarende spørgsmål. Så vidt jeg kan se, så er det altså noget som skal ske hver gang du aktiverer makroen.
Første gang startes i A1 ... Anden gang startes i A24 ... Tredie gang startes i A47 ... etc. Indtil der en dag ikke er mere plads i regnearket! ;0)
Og det du bruger til at "huske", hvor der skal fortsættes fra er placeringen af markøren (dvs. den aktive celle). Er du sikker på, at der ikke er nogen risiko for at en bruger "kommer til" at flytte markøren?
Hvis det ikke er noget problem, så er det ok, men hvis der er en lille risiko vil jeg foreslå at vi i en celle laver en tæller, som vi så bruger til at beregne, hvor skrivningen starter. Jeg kan lave et forslag til begge dele, men du må gerne lige melde tilbage, hvad du foretrækker.
Først og fremmest skal jeg svare, ellers kan jeg ikke få noget :0)
Excels egen indspilning er som regel en relativt "grov" kodning, hvor alt hvad du foretager dig, skrives i koden. Når koden skal køre, er det oftest ikke hensigtsmæssigt at gøre det på helt samme måde.
Ja optage-makroerne er kun til begrænset brug. Men det er til gengæld smart, når man ikke lige ved hvad en funktion hedder i VBA. Så kan man bare optage en makro, og så se hvad funktionen hedder, og så tilpasse den. Jeg har tit haft megen nytte af den.
Så ved jeg det, til når jeg skal prøve at lege med det makro-ting, for der kommer garanteret mere at den slags. Jeg har 60 point der ligger og venter på svar, dem kan du da også få, for det var faktisk også det spørgsmål jeg søgte svar til.
hellfishdk > Det havde jeg ikke lige opdaget, for så havde jeg nok også brokket mig over det, for du må ikke oprette to spørgsmål om det samme. Du burde derfor have lukket det ene, og så kun fortsat med det andet. Hvis du fortsat synes jeg har fortjent lidt flere point, å synes jeg du skal bede x-lars om at lægge et svar, så kan vi dele pointene. Så får x-lars også lidt for indsatsen - han var åbenbart den eneste der var interesseret.
Ja, ja - det er jo ikke verdens undergang. Det er vist mest for at man ikke skal sætte for mange i gang med den samme opgave, og så for at undgå at der gives over 200 point for et enkelt spørgsmål.
Logisk nok. x-lars, vil ikke have pointene, da det var dig (sjap), der gav løsningen. Hvis du vil have dem så bare læg et svar på tråden, så får du pointene.
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.