Avatar billede Mads32 Ekspert
22. februar 2016 - 10:11 Der er 7 kommentarer og
1 løsning

Makro der kan kopiere et variabelt område til en variabel placering.

Hej Eksperter

Jeg har brug for hjælp til at skrive en kommando, der i en makro kopierer et område af varierende størrelse til en varierende placering. De nødvendige oplysninger for variationerne opsamles i faste celler.

Jeg ved hvordan jeg får disse oplysninger læst ind i makroen (et TIP fra Eksperten); men jeg mangler at få disse værdier til at indgå i kommandoerne, der skal kopiere områderne.

Området hvorfra der skal kopieres, ligger altid i kolonnerne AT:AU, og skal altid kopieres til kolonnerne Q:R. Området hvorfra der skal kopieres starter altid i celle AT10, og området hvortil der skal kopieres starter altid i celle Q10.
 
Området hvorfra der skal kopieres består af 2 delområder, delområde1 på de øverste linjer(eksempelvis 12 linjer), og delområde2 på linjerne umiddelbart derunder(eksempelvis 15 linjer).  Oplysningerne om antal linjer hentes i celle AU4 for delområde1 og celle AU5 for delområde2.
 
Delområderne skal kopieres hver for sig. Først delområde2, der skal kopieres til Q10, og derefter delområde1, der skal indsættes fra de første tomme celler under delområde2. I dette eksempel fra celle Q25.
Avatar billede finb Ekspert
22. februar 2016 - 11:39 #1
"område af varierende størrelse til en varierende placering"
select en celle i området og prøv med:
currentRegion
22. februar 2016 - 15:40 #2
Hvad er kriteriet for de 12 hhv. 15 rækker?
Avatar billede Mads32 Ekspert
22. februar 2016 - 18:14 #3
Det er måske nemmere at vise hvad jeg har begået.
Jeg har med makrooptageren lavet vedlagte makroer som virker, men jeg er ikke i stand til at skrive argumenterne, så makroerne kan virke med de ønskede variabler.

Jeg har prøvet at forklare hvad jeg ønsker, og håber at en "Ekspert" vil lave de nødvendige tilretninger.

på forhånd tak.

Sub kopier_omraade2_til_Q10()
    Sheets(" Start alle").Select
    Application.Goto Reference:="R10C46"
    Application.Goto Reference:="R18C46"
*tallet 18 erstattes af 8 (som er en variabel som hentes i celle AU5 + 10 som er konstant)

    Range("AT18:AU87").Select
*tallet 18 erstattes af 8 (som er en variabel som hentes i celle AU5 + 10 (som er konstant)
*tallet 87 erstattes af 78 (som er en variabel som hentes i celle AT5 - 8 (som er en variabel
der hentes i celle AU5) + 9 (som er konstant)

    Selection.Copy
    Application.Goto Reference:="R10C17"
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("Q9").Select
End Sub



Sub kopier_omraade1_til_Q_varierende()
    Sheets(" Start alle").Select
    Application.Goto Reference:="R10C46"
    Range("AT10:AU17").Select
*tallet 17 erstattes af 8 (som er en variabel som hentes i celle AU5 + 9 (som er konstant)

    Selection.Copy
    Application.Goto Reference:="R10C17"
    Application.Goto Reference:="R80C17"
*tallet 8 erstattes af 78 (som er en variabel som hentes i celle AT5 + 8 (som er en variabel
der hentes i celle AU5) - 11 (som er konstant)

    ActiveSheet.Paste
'    Range("Q87").Select
    Selection.End(xlUp).Select
End Sub
Avatar billede store-morten Ekspert
22. februar 2016 - 22:00 #4
Et forsøg fra mig, brug et test ark først.
Sub kopier_omraade2_og_1_til_Q10()

    'Område 2
    Sheets(" Start alle").Select
    Start = Range("AU5").Value + 10
    Slut = Range("AT5").Value - Range("AU5").Value + 9
    Range("AT" & Start & ":AU" & Slut).Copy Destination:=Range("Q10")
    Application.CutCopyMode = False
   
    'Område 1
    Slut = Range("AU5").Value + 9
    Range("AT10:AU" & Slut).Copy Destination:=Range("Q10").End(xlDown).Offset(1)
    Application.CutCopyMode = False
    Range("Q10").Select
    Selection.End(xlUp).Select
   
End Sub
Avatar billede Mads32 Ekspert
22. februar 2016 - 23:33 #5
Tak store-morten

Jeg vil prøve det. Det er blevet for sent i dag. men jeg håber på at nå det i morgen.
Avatar billede Mads32 Ekspert
23. februar 2016 - 21:31 #6
Hej store-morten

Jeg har prøvet med dit forslag, efter nogle forsøg fik jeg det til at virke, kun for at opdage at min kopieringsrækkefølge ikke gav det resultat jeg egentlig vil have.

Jeg kan bruge dele af dit forslag, så mange tak.

Send et svar så du kan dine point
Avatar billede store-morten Ekspert
23. februar 2016 - 22:04 #7
Velbekomme :-)
Avatar billede Mads32 Ekspert
26. februar 2016 - 18:38 #8
Hej  store.morten
Nu har jegfået dit forslag til at virke perfekt. Jeg har ændret lidt og anvendt det sammen med nogle if-sætninger, og det fungerer perfekt.  Du kan måske ændre if-sætningerne ved at skrive en af dine, for mig komplicerede kommandoer.
Jeg har også et ønske om at anvende en "for to next", for 7 gentagelser hvor det er den adresse, der skal kopieres til, der ændres, Adressen flyttes 3 kolonner mod højre for hver gentagelse.
Jeg vedlægger en kopi af en del af den makro der virker.

Foran nedenstående makro der starter med 'POST1 ønsker jeg at få følgende til at virke:

Application.Goto Reference:="R10C10"
For i = 1 to 7
Application.Goto Reference:="R10C10+3"  Jeg ønsker at markøren flytter sig 3 kolonner til højre ved hvert gennemløb.

' POST 1 - Afhængig af antal af deltagere på samme tid ved post1, udføres if-sætning
antal1 = Range("O6") 'antal af deltager på samme tid ved post 1
If antal1 = 2 Then 
Application.Goto Reference:="R10C37" ' Der kopieres herfra (det eneste der ændre i hver if-sætning)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Application.Goto Reference:="R10C13" 'Der kopieres hertil
ActiveSheet.Paste
End If

If antal1 = 3 Then
Application.Goto Reference:="R10C40" ' Der kopieres her fra(det eneste der ændre i hver if-sætning)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Application.Goto Reference:="R10C13" 'Der kopieres hertil
ActiveSheet.Paste
End If

If antal1 = 1 Then
Application.Goto Reference:="R10C43" ' Der kopieres herfra(det eneste der ændre i hver if-sætning)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Application.Goto Reference:="R10C13" 'Der kopieres hertil
ActiveSheet.Paste
End If

Next i

End Sub

Skal jeg oprette et nyt spørgsmål for at kunne tildele dig point? Jeg glemte at vælge point sidste gang, og dit svar var mere værd for mig. For svar på dette problem giver jeg gerne 200 point.

Jeg håber på et positivt svar.
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