20. september 2011 - 11:13Der er
4 kommentarer og 1 løsning
Macro til Excel 2007
Macro til Excel 2007 Jeg skal bruge en funktion som jeg kan bruge i min macro. jeg har hver måned en liste med data som jeg skal have kopieret over i et andet regneark, i en kolonne for den specifikke måned. Selv kopiering er ikke noget problem, men jeg har problemer med at så defineret hvilken kolonne dataerne skal kopieres ind i. Jeg har defineret en celle i mit kilde ark, hvor man skal skrive den aktuelle måned i, macroen skal så finde det månedsnavn som jeg har defineret i den specifikke celle, i det andet ark. derefter skal jeg så have kopieret indholdet fra kolonnen i kildearket til den kolonne i mit andet ark som passer til månedsnavnet i den specifikke celle i mit kildeark. Altså: jeg skal bruge en macro funktion/kode som kan finde en/et bestemt navn, som er angivet i en celle, i et defineret område på resultatarket. således at jeg kan kopiere et listeområde ind i en specifik kolonne.
En simpel løsning ville være at placere markeringen i den første celle og så ellers lave et loop der tester cellens værdi og hvis det ikke er den rigtige, så hopper til næste celle.
Det kunne se således ud.
Range("A1").Select Do While ActiveCell.Value() <> "TestVærdi" ActiveCell.Offset(1, 0).Range("A1").Select Loop
Jeg kan desværre ikke få det til at fungere, kan du uddybe hvorledes jeg skal udfylde mine refferencer?
Her er min midlertidige macro:
U9 er start cellen for mine data jeg skal have kopieret, men jeg kan ikke få do-loop funktionen til at finde den specifikke måned hvor den skal kopiere dataerne ind? de tre celler fra U18 til W18 er pt. månederne hvori den skal finde den rigtige måned. og R8 cellen er der hvor den specifikke måned står, (denne vil skifte i næste måned)
Range("U9").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("U18:W18").Select Do While ActiveCell.Value() <> "R8" ActiveCell.Offset(0, 1).Range("U18").Select Loop ActiveSheet.Paste End Sub
Range("U9").Select ' Sætter U9-cellen til at være aktiv. Range(Selection, Selection.End(xlDown)).Select ' Markerer fra den aktive celle og resten af kolonnen nedad. Selection.Copy ' Kopierer markeringen.
Range("R8").Select ' Sætter R8-cellen til at være aktiv. TestValue = ActiveCell.Value() ' Henter værdien fra den aktive celle og gemmer den i en variable.
Range("U18").Select ' Sætter U18-cellen til at være aktiv.
Do While ActiveCell.Value() <> TestValue ' Tester indtil den aktive celle er lig med værdien i variablen. Den tester indtil den finder den rigtige værdi eller indtil enden på arket nås og der opstår en fejl, så udbyg evt. med en tæller-funktionalitet for at gør den mere sikker mod fejl. ActiveCell.Offset(0, 1).Range("A1").Select ' Skifter den aktive celle til cellen til højre. Loop ' Gentager hvis betingelsen ikke er opfyldt.
ActiveSheet.Paste ' Indsætter de kopierede celler.
helt ok. Du vender bare tilbage, hvis det bliver nødvendigt. :)
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.