Avatar billede Chenowen Nybegynder
18. juni 2013 - 09:01 Der er 9 kommentarer

VBA til overførsel af data fra en excel fane til en anden

Hej Eksperter,

Jeg sidder med en opgave, hvor jeg skal overføre noget data fra forskellige faner til en anden fane. Eksempelvis skal jeg overføre data fra "sheet2" C8:C32 til "sheet1" B5:B29 og "sheet3" C8:C13 til "sheet1", så det kommer efter det data der er kommet fra "sheet2"! Og sådan skal det fortsætte med forskellige sheets, da skal overføres til "sheet1". Er der nogle der kan hjælpe med den grundlæggende VBA kode til denne handling?

- Jeppe
Avatar billede finb Ekspert
18. juni 2013 - 10:22 #1
lige kort med ord:

for ark = 2 til antalArk
  kopier range C8>>ned til xlLastCell i aktuelt ark
    indsæt i ark1_B5>>ned til xlLastCell + 1
NeXT ark

det er skelettet, har travlt, bed andre uddybe
Avatar billede Chenowen Nybegynder
18. juni 2013 - 11:04 #2
Jeg har fundet frem til en VBA der fungere som den skal:
Sub Macro1()
    Sheets("Sheet2").Select
    Range("C8:C32").copy
    Sheets("Sheet1").Select
    Range("B5:B29").Select
    ActiveSheet.Paste
End Sub

Men kan man lave noget smart, når jeg smider "sheet3" ind, så den bare overfører til efter "sheet2"s data på "sheet1"? Altså noget med at sige +1 eller sådan? Jeg vil gerne det, så jeg er fri for at skulle side og regne rangen ud til hver sheet, hvis det er forståeligt?
Avatar billede store-morten Ekspert
18. juni 2013 - 13:09 #3
Måske:

Sub Macro2()
Sheets(2).Range("C8:C32").Copy _
    Destination:=Sheets(1).Range("B5")
   
Sheets(3).Range("C8:C13").Copy _
    Destination:=Sheets(1).Range("B5").End(xlDown).Offset(1, 0)
   
Sheets(4).Range("C8:C13").Copy _
    Destination:=Sheets(1).Range("B5").End(xlDown).Offset(1, 0)
End Sub
Avatar billede Chenowen Nybegynder
18. juni 2013 - 13:20 #4
Den fungerer ikke helt store-morten. Når jeg skriver VBA'en ind, så bliver sheet(3) overskrevet, så så sheet(4) egentlig kommer efter sheet(2)! Så ved ikke om man kan rangordne dem, så man siger sheet(3) starter efter sheet(2) og sheet(4) efter sheet(3) osv.?
Avatar billede store-morten Ekspert
18. juni 2013 - 13:38 #5
Går ud fra at der ikke er data i Sheets(1).Range("B5") og nedaf, inden makro køres?

Sub Macro2()
'Kopierer Ark2 C8:C32
Sheets(2).Range("C8:C32").Copy _
    Destination:=Sheets(1).Range("B5")
'Sætter ind på Ark1 fra B5 og ned

'Kopierer Ark3 C8:C13
Sheets(3).Range("C8:C13").Copy _
    Destination:=Sheets(1).Range("B5").End(xlDown).Offset(1, 0)
'Sætter ind på Ark1 ud fra B5 og nederste tomme celle
   
'Kopierer Ark4 C8:C13
Sheets(4).Range("C8:C13").Copy _
    Destination:=Sheets(1).Range("B5").End(xlDown).Offset(1, 0)
'Sætter ind på Ark1 ud fra B5 og nederste tomme celle
End Sub

Prøv at kopierer koden ind, komentarer med grøn tekst.
Avatar billede Chenowen Nybegynder
18. juni 2013 - 14:14 #6
Der er ingen data i "sheet1", men koden returnerer det samme! Den springer "sheet3" over, og indsætter sheet4 der i stedet. Så måske jeg skal indføre rangen manuelt, desværre.
Avatar billede store-morten Ekspert
18. juni 2013 - 14:25 #7
Måske er "sheet3" ikke "Sheets(3)"

Prøv denne, der henviser til "Arknavn" og ikke "Arknr":
Sub Macro2()
'Kopierer Sheet2 C8:C32
Sheets("Sheet2").Range("C8:C32").Copy _
    Destination:=Sheets("Sheet1").Range("B5")
'Sætter ind på Sheet1 fra B5 og ned

'Kopierer Sheet3 C8:C13
Sheets("Sheet3").Range("C8:C13").Copy _
    Destination:=Sheets("Sheet1").Range("B5").End(xlDown).Offset(1, 0)
'Sætter ind på Sheet1 ud fra B5 og nederste tomme celle
   
'Kopierer Sheet4 C8:C13
Sheets("Sheet4").Range("C8:C13").Copy _
    Destination:=Sheets("Sheet1").Range("B5").End(xlDown).Offset(1, 0)
'Sætter ind på Sheet1 ud fra B5 og nederste tomme celle
End Sub
Avatar billede Chenowen Nybegynder
18. juni 2013 - 15:46 #8
Nej den returnerer det samme som før, altså sheet3 bliver overskrevet, så ved ikke lige hvad det kan skyldes?

For lige at udpensle hvad hele min opgave går ud på, så kan en kunde bestille nogle produkter ud fra forskellige faner, når kunden har bestilt hvad den vil have under fanerne, skal de ønskede produkter føres over til "sheet1", for at danne mere overblik over de bestilte produkter! Jeg har så yderligere et spørgsmål, hvis kunden eksempelvis ikke bestiller noget under fane 5, er det så muligt at kunne slette fane 5, selvom fane 5 er en del af VBA'en? Eller kan man gøre sådan i VBA'en, at hvis fane 5 slettes, så deaktiveres VBA'en der indeholder noget fra fane 5?
Avatar billede store-morten Ekspert
18. juni 2013 - 15:55 #9
Er det muligt at få sendt på E-mail?
Adresse under profil.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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