Avatar billede Mads32 Ekspert
27. februar 2016 - 14:46 Der er 12 kommentarer og
1 løsning

Hjælp fra store-morten -- kopier til flere variable områder

Hej store-morten
Jeg har lagt et tillægsspørgsmål ud på mit tidlige spørgsmål "Makro der kan kopiere et variabelt område ti en variabel placering"; men jeg tror ikke at du følger spørgsmål der er afsluttet, så derfor gentager jeg mit nye spørgsmål her.

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 store-morten Ekspert
27. februar 2016 - 18:39 #1
Der er ingen logisk sammenhæng hvor der kopieres fra,?

    If antal1 = 1 Then
    'Der kopieres fra kolonne 43

    If antal1 = 2 Then
    'Der kopieres fra kollonne 37

    If antal1 = 3 Then
    'Der kopieres fra kollonne 40

" 7 gentagelser "

Sker der ændringer ved hvert gennemløb, ellers sættes samme data i alle 7 kollonner?
Avatar billede store-morten Ekspert
27. februar 2016 - 19:46 #2
Virke denne:
Sub test2()
    antal1 = Range("O6")

    If antal1 = 1 Then
    Range("AQ10", Range("AQ10").End(xlDown)).Copy Destination:=Range("M10")
    End If

    If antal1 = 2 Then
    Range("AK10", Range("AK10").End(xlDown)).Copy Destination:=Range("M10")
    End If

    If antal1 = 3 Then
    Range("AN10", Range("AN10").End(xlDown)).Copy Destination:=Range("M10")
    End If
    Application.CutCopyMode = False
End Sub
Avatar billede store-morten Ekspert
27. februar 2016 - 19:52 #3
Håber jeg har forstået det rigtigt, med gennemløb:
Sub test3()
IndSætRække = 10
IndSætKollonne = 10
For i = 1 To 7
IndSætKollonne = IndSætKollonne + 3

    antal1 = Range("O6")

    If antal1 = 1 Then
    Range("AQ10", Range("AQ10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    End If

    If antal1 = 2 Then
    Range("AK10", Range("AK10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    End If

    If antal1 = 3 Then
    Range("AN10", Range("AN10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    End If

Next i
Application.CutCopyMode = False
End Sub
Avatar billede store-morten Ekspert
27. februar 2016 - 19:54 #4
Med kommentarer:
Sub test3()
IndSætRække = 10
IndSætKollonne = 10
For i = 1 To 7
'Første IndSætkollonne sættes til 13 ( M )
IndSætKollonne = IndSætKollonne + 3
'IndSætKollonnen 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 = 1 Then
    'Der kopieres fra kolonne 43, AQ10 og ned
    Range("AQ10", Range("AQ10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    'Destination = Indsættes i række 10 Kollonne 13
    'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.
    End If

    If antal1 = 2 Then
    'Der kopieres fra kollonne 37 AK10 og ned
    Range("AK10", Range("AK10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    'Destination = Indsættes i række 10 Kollonne 13
    'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.
    End If

    If antal1 = 3 Then
    'Der kopieres fra kollonne 40, AN10 og ned
    Range("AN10", Range("AN10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    'Destination = Indsættes i række 10 Kollonne 13
    'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.

    End If

Next i
Application.CutCopyMode = False
End Sub
Avatar billede Mads32 Ekspert
28. februar 2016 - 09:42 #5
Tak store-morten

Jeg har lige set at du har svaret.

Har ikke nået at se på dem. Når det sikkert ikke i dag, men du får en kommentar så snart jeg har kikket på dine svar.
Avatar billede Mads32 Ekspert
28. februar 2016 - 16:52 #6
Hej

Forslaget virker. men benytter ved hvert gennemløb ("O6") som værdi for tal1.

Jeg ønsker at tal1 skal hentes i celle ("R6") ved andet gennemløn og i celle ("U6") ved tredie gennemløb ....o.s.v indtil 7. gennemløb.
Avatar billede store-morten Ekspert
28. februar 2016 - 18:23 #7
Se bemærkning i #1 nederst ;-)

Prøv:
Sub test4()
AntalRække = 6
AntalKollonne = 12
IndSætRække = 10
IndSætKollonne = 10
For i = 1 To 7
'Første IndSætkollonne sættes til 13 ( M )
IndSætKollonne = IndSætKollonne + 3
'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.

'Første Antalkollonne sættes til 15 ( O )
AntalKollonne = AntalKollonne + 3
'AntalKollonnen 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 = Cells(AntalRække, AntalKollonne) 'antal af deltager på samme tid ved post 1


    If antal1 = 1 Then
    'Der kopieres fra kolonne 43, AQ10 og ned
    Range("AQ10", Range("AQ10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    'Destination = Indsættes i række 10 Kollonne 13
    'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.
    End If

    If antal1 = 2 Then
    'Der kopieres fra kollonne 37 AK10 og ned
    Range("AK10", Range("AK10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    'Destination = Indsættes i række 10 Kollonne 13
    'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.
    End If

    If antal1 = 3 Then
    'Der kopieres fra kollonne 40, AN10 og ned
    Range("AN10", Range("AN10").End(xlDown)).Copy Destination:=Cells(IndSætRække, IndSætKollonne)
    'Destination = Indsættes i række 10 Kollonne 13
    'IndSætKollonnen flytter sig 3 kolonner til højre ved hvert gennemløb.

    End If

Next i
Application.CutCopyMode = False
End Sub
Avatar billede Mads32 Ekspert
29. februar 2016 - 09:28 #8
Hej store-morten

Tak for dit indlæg #7. Der sker desværre intet når jeg eksekverer makroen. Der er heller ingen fejlmeldinger.

Jeg skulle have svaret på dit spørgsmål i #1, men det overså jeg i begejstring over dine svar #2 og #3, som fulgte hurtigt efter.

Svar på dit spørgsmål i #1: Ved gennemløb skal der indsættes forskellige data i hver kolonne, afhængig af "antal1", som hentes i cellerne O6, R6, U6, X6, AA6, AD6 og AG6.

For at løse opgaven kan jeg gentage dit svar #4 7 gange i en makro, hvilket jeg vil gøre, hvis der ikke er en anden enklere programmering..
Avatar billede store-morten Ekspert
29. februar 2016 - 12:32 #9
Underligt, virker i mit test ark.
Avatar billede Mads32 Ekspert
29. februar 2016 - 21:15 #10
Hej

Vil du eventuelt lægge det testark ud, så jeg kan downloade det. Måske har jeg alligevel indtastet noget forkert, selv om der ikke meldes fejl.
Avatar billede store-morten Ekspert
29. februar 2016 - 23:05 #11
Har desværre ikke adgang til excel på denne pc ;-)

Kopier koden ind på ark1

O6: 1
R&: 2
U6: 3
X6: 1
AA6: 2
AD6: 3
AG6: 1

AK10: test2
AN10: test3
AQ10: test1
Avatar billede Mads32 Ekspert
02. marts 2016 - 18:31 #12
Hej store-morten

Jeg har prøvede igen. Startede forfra med at indtaste dit forslag i en ny fil, sammen med dine test data.  DET VIRKEDE.

Jeg kopierede makroen over i den fil hvor den skal bruges.  OG DET VIRKER.
Jeg kan ikke se forskelle på den makro jeg skrev første gang, og den makro der nu virker; men et eller andet sted, overser jeg noget.

Endnu tusind tak, send et svar så jeg kan tildele dig dine velfortjente point.
Avatar billede store-morten Ekspert
02. marts 2016 - 18:35 #13
Det var dejligt :-)
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