Avatar billede Slettet bruger
30. juli 2014 - 20:08 Der er 7 kommentarer og
1 løsning

Hjælp til en macro kopi kode

Hej Eksperter!

Har brug for lidt hjælp.
I meget af min kode bruger jeg når jeg skal kopi op til flere celler "C6:C26"

Men da jeg ikke kan på noget af min kode, ville jeg høre om der var noget der var nemmere af gøre end jeg skal skrive alt ned(bliver lang - da det er op til flere koloner og celler)

udsnit af koden jeg har problemer med.

    Range("P5:P26").Select
    Range("C5").Value = Range("C5").Value + Range("P5").Value
    Range("C6").Value = Range("C6").Value + Range("P6").Value
    Range("C7").Value = Range("C7").Value + Range("P7").Value
If Range("C5").Value = "0" Then
Range("C5").Value = ""
End If
If Range("C6").Value = "0" Then
Range("C6").Value = ""
End If
If Range("C7").Value = "0" Then
Range("C7").Value = ""
End If
osv.

Kunne godt tænke mig af jeg kunne bare skrive:

Range("C5:C26").Value = Range("C5:C26").Value + Range("P5:P26").Value
If Range("C5:C26").Value = "0" Then
Range("C5:C26").Value = ""
End If

Findes der en løsning på det?
eller noget der er smartere?
tak på forhånd.
Avatar billede kabbak Professor
30. juli 2014 - 20:46 #1
Dim Data1 As Variant, Data2 As Variant
    Data1 = Range("C5:C26")
    Data2 = Range("P5:P26")
    For i = 1 To UBound(Data1)
        Data1(i, 1) = Data1(i, 1) + Data2(i, 1)
        If Data1(i, 1) = 0 Then Data1(i, 1) = ""
    Next
    Range("C5:C26") = Data1
Avatar billede Slettet bruger
30. juli 2014 - 21:36 #2
Kan ikke få det til at virke, Den kopiere bare helt forkert.
du får noget mere af koden (af den lange)

Sub Update()
Application.ScreenUpdating = False
Sheets("ark2").Activate
Sheets("ark2").Range("P5:AD26").Copy
    Range("P5:AD26").End(xlUp).Offset(1, 0).Activate
   
    ActiveCell.PasteSpecial , Operation:=xlNone, SkipBlanks:=True, Transpose:=False
       
Sheets("ark2").Activate
    Range("P5:AD26").Select
    Range("C5").Value = Range("C5").Value + Range("P5").Value
    If Range("C5").Value = "0" Then
    Range("C5").Value = ""
    End If
    Range("C6").Value = Range("C6").Value + Range("P6").Value
    If Range("C6").Value = "0" Then
    Range("C6").Value = ""
    End If
    Range("C7").Value = Range("C7").Value + Range("P7").Value
    If Range("C7").Value = "0" Then
    Range("C7").Value = ""
    End If
    Range("C8").Value = Range("C8").Value + Range("P8").Value
    If Range("C8").Value = "0" Then
    Range("C8").Value = ""
    End If
    Range("C9").Value = Range("C9").Value + Range("P9").Value
    If Range("C9").Value = "0" Then
    Range("C9").Value = ""
    End If
    Range("C10").Value = Range("C10").Value + Range("P10").Value
    If Range("C10").Value = "0" Then
    Range("C10").Value = ""
    End If
    Range("C11").Value = Range("C11").Value + Range("P11").Value
    If Range("C11").Value = "0" Then
    Range("C11").Value = ""
    End If
    Range("C12").Value = Range("C12").Value + Range("P12").Value
    If Range("C12").Value = "0" Then
    Range("C12").Value = ""
    End If
    Range("C13").Value = Range("C13").Value + Range("P13").Value
    If Range("C13").Value = "0" Then
    Range("C13").Value = ""
    End If
    Range("C14").Value = Range("C14").Value + Range("P14").Value
    If Range("C14").Value = "0" Then
    Range("C14").Value = ""
    End If
    Range("C15").Value = Range("C15").Value + Range("P15").Value
    If Range("C15").Value = "0" Then
    Range("C15").Value = ""
    End If
    Range("C16").Value = Range("C16").Value + Range("P16").Value
    If Range("C16").Value = "0" Then
    Range("C16").Value = ""
    End If
    Range("C17").Value = Range("C17").Value + Range("P17").Value
    If Range("C17").Value = "0" Then
    Range("C17").Value = ""
    End If
    Range("C18").Value = Range("C18").Value + Range("P18").Value
    If Range("C18").Value = "0" Then
    Range("C18").Value = ""
    End If
    Range("C19").Value = Range("C19").Value + Range("P19").Value
    If Range("C19").Value = "0" Then
    Range("C19").Value = ""
    End If
    Range("C20").Value = Range("C20").Value + Range("P20").Value
    If Range("C20").Value = "0" Then
    Range("C20").Value = ""
    End If
    Range("C21").Value = Range("C21").Value + Range("P21").Value
    If Range("C21").Value = "0" Then
    Range("C21").Value = ""
    End If
    Range("C22").Value = Range("C22").Value + Range("P22").Value
    If Range("C22").Value = "0" Then
    Range("C22").Value = ""
    End If
    Range("C23").Value = Range("C23").Value + Range("P23").Value
    If Range("C23").Value = "0" Then
    Range("C23").Value = ""
    End If
    Range("C24").Value = Range("C24").Value + Range("P24").Value
    If Range("C24").Value = "0" Then
    Range("C24").Value = ""
    End If
    Range("C25").Value = Range("C25").Value + Range("P25").Value
    If Range("C25").Value = "0" Then
    Range("C25").Value = ""
    End If
    Range("C26").Value = Range("C26").Value + Range("P26").Value
    If Range("C26").Value = "0" Then
    Range("C26").Value = ""
    End If

Kopieres fra. P5:AD26
til C5:E26 - P26:N26 (Der er et mellemrum pga. design som er kolonne F)
Avatar billede kabbak Professor
30. juli 2014 - 21:55 #3
se her
http://gupl.dk/712796/

din kode er udkommenteret
Avatar billede Slettet bruger
30. juli 2014 - 22:21 #4
Ja. okej. jeg forklare mig nok lidt forkert.
Din kode virker.
Men ikke når jeg sætter flere kolonner ind i den.

Din kode kopiere og plusser en kolonne til en anden.
men har 10 kolonner mere som skal kopieres over til nogle andre.

Den første var:
Fra P5:P26 Til C5:C26

Resten:
Fra Q5:Q26 Til D5:D26
Fra R5:R26 Til E5:E26
Fra S5:S26 Til G5:G26
Fra T5:T26 Til H5:H26
Fra U5:U26 Til I5:I26
Fra V5:V26 Til J5:J26
Fra W5:W26 Til K5:K26
Fra X5:X26 Til L5:L26
Fra Y5:Y26 Til M5:M26
Fra Z5:Z26 Til N5:N26
Avatar billede kabbak Professor
30. juli 2014 - 23:40 #5
Du hopper over F kolonnen, er det ikke en fejl.

her er til 11 kolonner

Sub Update()
'Application.ScreenUpdating = False
'Sheets("ark2").Activate
'Sheets("ark2").Range("P5:AD26").Copy
'    Range("P5:AD26").End(xlUp).Offset(1, 0).Activate
'    ActiveCell.PasteSpecial , Operation:=xlNone, SkipBlanks:=True, Transpose:=False
'
    Dim Data1 As Variant, Data2 As Variant
    For a = 3 To 14
        Data1 = Range(Cells(5, a), Cells(26, a))    'fra kolonne C til N
        Data2 = Range(Cells(5, a + 13), Cells(26, a + 13))  'fra kolonne P til Z
        For i = 1 To UBound(Data1)
            Data1(i, 1) = Data1(i, 1) + Data2(i, 1)
            If Data1(i, 1) = 0 Then Data1(i, 1) = ""
        Next
        Range(Cells(5, a), Cells(26, a)) = Data1
    Next
End Sub
Avatar billede Slettet bruger
30. juli 2014 - 23:47 #6
F kolonnen hopper jeg over. pga. (print) design.
Avatar billede kabbak Professor
31. juli 2014 - 08:15 #7
Sub Update()
'Application.ScreenUpdating = False
'Sheets("ark2").Activate
'Sheets("ark2").Range("P5:AD26").Copy
'    Range("P5:AD26").End(xlUp).Offset(1, 0).Activate
'    ActiveCell.PasteSpecial , Operation:=xlNone, SkipBlanks:=True, Transpose:=False
'
    Dim Data1 As Variant, Data2 As Variant
    Dim Col As Integer, I As Integer
    Col = 13
    For A = 3 To 14
        If A = 6 Then
            A = 7
            Col = 12
        End If

        Data1 = Range(Cells(5, A), Cells(26, A))    'fra kolonne C til N men hopper over F
        Data2 = Range(Cells(5, A + Col), Cells(26, A + Col))  'fra kolonne P til Z
        For I = 1 To UBound(Data1)
            Data1(I, 1) = Data1(I, 1) + Data2(I, 1)
            If Data1(I, 1) = 0 Then Data1(I, 1) = ""
        Next
        Range(Cells(5, A), Cells(26, A)) = Data1
    Next
End Sub
Avatar billede Slettet bruger
31. juli 2014 - 14:33 #8
Tjekker kode når jeg kommer hjem.
Men ellers lukker jeg det bare nu.
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