Avatar billede richardmodalen Nybegynder
13. maj 2003 - 16:24 Der er 20 kommentarer og
1 løsning

Makroer, indspilling

Hej!

Jeg er igang med at lave et regneark, med en indebygget makro der skal kopiere en række, og sætte den ind igen på regnearket. Dette går udmærket, men jeg ville gerne at man kunne markere en række, som den kopierede række kom foran, så man selv kunne styre placeringen af det kopierede.
Så kunne man markere en række, trykke på knappen, og så var det oprettet en ny række foran den markerede.
Håber det kan lade sig gøre.

MVH Richard
Avatar billede richardmodalen Nybegynder
13. maj 2003 - 16:38 #1
Dette er teksten i visual basic:

    Rows("7:7").Select
    Selection.Copy
    Rows("10:10").Select
    Selection.Insert Shift:=xlDown
    Range("A10:G10").Select
    Application.CutCopyMode = False
    Selection.ClearContents

Det er bare ikke A10 der skal være til indsætning, det er det man har markeret inden man aktiverer makroen.
Avatar billede jkrons Professor
13. maj 2003 - 16:39 #2
Hvis du først skal markere den række du vil kopiere, så starte makroen, så markere den rækkedu vil indsætte over, og så fortsætte makroen må det være nemmere at foretage kopieringen manuelt.
Avatar billede jkrons Professor
13. maj 2003 - 16:39 #3
Er det altid række 7, du vil kopiere?
Avatar billede janvogt Praktikant
13. maj 2003 - 16:42 #4
Sub Test()
    Range("A7:k7").Copy
    ActiveCell.Offset(-1, 0).Select
    Selection.Insert Shift:=xlDown
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
Avatar billede janvogt Praktikant
13. maj 2003 - 16:45 #5
Hvis det hele række 7 kan du bruge
Rows("7:7").Copy i stedet for
Range("A7:k7").Copy
Avatar billede richardmodalen Nybegynder
13. maj 2003 - 16:49 #6
Nej det er ikke alltid række 7, det skal være sådan at brugeren af regnearket kan markere en række uafhængig af hvilket nummer, og så bliver der indsat en ny række foran eller bag denne.......

A7:k7 skal alstå erstattes med en formel der betyder at dette er den der er markeret i regnearket.
Avatar billede jkrons Professor
13. maj 2003 - 16:51 #7
Altså en kopi af den markerede række ovenover denne?
Avatar billede janvogt Praktikant
13. maj 2003 - 16:53 #8
Jeg forstår vist ikke helt ....
Hvad er det så for en række, som skal kopieres?
Avatar billede jkrons Professor
13. maj 2003 - 16:53 #9
Så kan du prøve denne variant af janvogts kode:

Sub Test()
    ActiveCell.EntireRow.Copy
    Selection.Insert Shift:=xlDown
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
Avatar billede janvogt Praktikant
13. maj 2003 - 16:54 #10
I dit eksempel ser det ud til, at det er række 7 som skal kopieres til et brugervalgt sted ...
Avatar billede jkrons Professor
13. maj 2003 - 16:56 #11
janvogt-> Det var derfor jeg spurgte om det altid var række 7, der skal kopieres. Hvis det er en valgfri række, der skal kopieres til et valgfrit sted vil jeg fastholde mit oprindelige svar. Så ER det nemmere at gøre det manuelt.
Avatar billede janvogt Praktikant
13. maj 2003 - 16:58 #12
Enig, jeg forstod godt dit spørgsmål :-)

Hvis det er foran skal koden se sådan ud:

Sub Test()
    ActiveCell.EntireRow.Copy
    Selection.Insert Shift:=xlUp
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
Avatar billede janvogt Praktikant
13. maj 2003 - 16:59 #13
.
Avatar billede jkrons Professor
13. maj 2003 - 17:01 #14
Om det er ovenover eller nedenunder er vel ret beset ligegyldigt, hvis de to rækker er fuldstændigt ens :-)
Avatar billede janvogt Praktikant
13. maj 2003 - 17:06 #15
Tjah, bare bygget på richards formulering "indsat en ny række foran eller bag denne ...."
Avatar billede richardmodalen Nybegynder
13. maj 2003 - 17:49 #16
Jooo det er lidt vanskelig at forklare....... Men det hele drejer sig om nogle data der skal kopieres, f.eks hele række A7. (det kan selvfølgelig osse være flere rækker.

Det det egentlig drejer sig om er at man på en måde i visual basic kan bestemme placeringen ved at markerer en område på regnearket som det kopierede skal blive sat ind.
Avatar billede richardmodalen Nybegynder
13. maj 2003 - 17:51 #17
Det er alltid den samme række jeg skal kopiere, det eneste der varierer er placeringen.......
Avatar billede jkrons Professor
13. maj 2003 - 18:39 #18
Nu forstår jeg ikke helt længere. Føst siger du, at det kan væøre en eller flere rækker, der skal kopieres. Men bagefter siger du, at det altid er den samme række.

Lad mig så prøveat spørge:

1. Er det altid den/de samme rækker (rækkenumre), der skal kopieres, eller kan det være forskellige rækkenumre?

2. Er det altid det samme sted, disse data skal indsættes, eller er det her du ønsker at kunne variere.

Hvis der skal kunne varieres to steder, altså både i det der skal kopieres, og det sted, hvor der skal sættes ind, er der efter min mening ikke vundet noget ved at lade en makro gøre arbejdet.
Avatar billede richardmodalen Nybegynder
13. maj 2003 - 19:20 #19
1. Det er alltid de samme data der skal kopieres.....

2. Ønsker at variere hvor dataen indsættes.
Avatar billede jkrons Professor
13. maj 2003 - 19:34 #20
Så må janvogts løsning da også være god nok. Du skal bare rette

Rows("7:7").Copy

til den/de rækker, hvor data rent faktisk står.

Står de fx altid i række 7,8 og 8 skal du skrive

Rows("7:9").Copy
Avatar billede janvogt Praktikant
14. maj 2003 - 03:48 #21
VBA-kommandoen ActiveCell tager udgangspunkt i det stedt man nu engang befinder sig på arket.

ActiveCell.Offset(-1, 0).Select går én række op i forhold til dette sted.
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