Avatar billede anskov Mester
14. maj 2018 - 15:11 Der er 19 kommentarer og
1 løsning

VBA kopier fra celler til andet ark, ny række hver gang

Hej Alle

På ark 1 skal jeg indtaste noget forskellig information i følgende celler:
B3
B5
B6
B12
B14
B16
B18
B20
B22

Denne information skal kopiers til ark 3 (ved tryk på en knap):
B3 skal kopiers til række A
B5 skal kopiers til række B
B6 skal kopiers til række C
B12 skal kopiers til række D
B14 skal kopiers til række E
B16 skal kopiers til række F
B18 skal kopiers til række G
B20 skal kopiers til række H
B22 skal kopiers til række I

Når informationen er kopiret så skal informationen slettes i cellerne i Ark1.

Næste gang der så bliver indtastet Information i Ark1 og der skal kopiers er det vigtigt det sker på næste række.
Det er kun B3 i Ark 1 der 100% bliver tastet en værdi i hver gang.

er dette muligt?
Søren
Avatar billede kim1a Ekspert
14. maj 2018 - 16:15 #1
Hvis du optager dit kopi mønster med makro-rekorderen så skal vi nok hjælpe med funktionen der skifter linje.

Basalt set er det noget a la dette du skal bruge:
https://stackoverflow.com/questions/42085308/excel-macro-copy-data-to-new-row
Avatar billede Nikolaj Forsker
15. maj 2018 - 07:27 #2
Den her burde virke.
den sætter først 1 ny række ind og derefter kopier værdierne over.

Hvis du vil have en knap, så sætter du en figur ind, derefter højre klik og tildel makro. Når du har lagt denne ind i VBA'en

Sub test()
'
' Kopier og sæt ind
'
    Sheets("Ark3").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown
    Sheets("Ark1").Select
    Range("B3").Select
    Selection.Copy
    Sheets("Ark3").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("B2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("C2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("D2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B14").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("E2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("F2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B18").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("G2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("H2").Select
    ActiveSheet.Paste
    Sheets("Ark1").Select
    Range("B22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ark3").Select
    Range("I2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Ark1").Select
    Range("A1").Select
End Sub
Avatar billede anskov Mester
15. maj 2018 - 10:00 #3
Hej Nikolaj og Kim

Nikolaj, tak for dit fine arbejde, der sker dog ikke noget når jeg trykker på knappen.
Jeg har lavet lidt om i mit ark, men det jeg har opdaget er at hvis jeg kopier information fra en dropdown liste så bliver hele dropdownlisten kopiret og ikke kun den valgte information. Og det samme sker når jeg kopier et notatfelt der består af ombrudt og flettet celler, så er det ikke kun notatet/værdien der bliver kopiret men hele cellen.

Det er B5 der er dropdownliste
Det er A25 der er en ombryd/flettet celler
B33 skal tælle +1 og derefter kopier

Jeg har lavet makroen, så i kan se kopi rækkefølgen, den skal stadigvæk hoppe ned på næste tomme række når der igen trykkes på knappen.
Sub Kopier()
'
' Kopier Makro
'

'
    Range("B3").Select
    Selection.Copy
    Sheets("Rapportering").Select
    Range("B2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("C2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("D2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("E2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B14").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("F2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("G2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B18").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("H2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("I2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("J2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("A25:D31").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("K2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B33").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
End Sub
Avatar billede Nikolaj Forsker
15. maj 2018 - 10:58 #4
hvis du skal indsætte en række har jeg brugt denne:

Sheets("Rapportering").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown
Avatar billede anskov Mester
15. maj 2018 - 11:25 #5
Jeg får en run-time error 1004
"Metoden Select for klassen Range mislykkedes.
Avatar billede Nikolaj Forsker
15. maj 2018 - 11:44 #6
Sub Kopier()
'
' Kopier Makro
'

'
    Sheets("Rapportering").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown
    Sheets("Start").Select
    Range("B3").Select
    Selection.Copy
    Sheets("Rapportering").Select
    Range("B2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("C2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("D2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("E2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B14").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("F2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("G2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B18").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("H2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("I2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("J2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("A25:D31").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("K2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
    Range("B33").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rapportering").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("Start").Select
End Sub
Avatar billede Nikolaj Forsker
15. maj 2018 - 11:47 #7
alternativt vil jeg forslå du kan ligge filen op.

Det giver folk en lidt bedre mulighed for at hjælpe.
Avatar billede kim1a Ekspert
15. maj 2018 - 11:56 #8
Gør sådan:
Sub test()

Dim shtInput As Worksheet
Dim shtOutput As Worksheet
Dim intSidsteraekke As Integer
Dim intInputraekke As Integer

'find sidste række med data så der kopieres ind i næste række
intSidsteraekke = Sheets("Sheet3").Cells(Sheets("sheet3").Rows.Count, "A").End(xlUp).Row
intInputraekke = intSidsteraekke + 1

' kopier fra input til output
Sheets("Sheet3").Cells(intInputraekke, 1) = Sheets("Sheet1").Range("B3").Value

End Sub

Du skal naturligvis have lavet flere linjer af denne:
Sheets("Sheet3").Cells(intInputraekke, 1) = Sheets("Sheet1").Range("B3").Value

Næste linje hedder:
Sheets("Sheet3").Cells(intInputraekke, 2) = Sheets("Sheet1").Range("B5").Value
Avatar billede anskov Mester
15. maj 2018 - 12:41 #9
Hej Kim

Jeg får en Compile error: Expected End Sub
og den highlighter med gult følgende:
Private Sub CommandButton1_Click()
Avatar billede anskov Mester
15. maj 2018 - 12:59 #10
Det er sådan mine første linjer ser ud og hvor jeg får en compile error på første linje

Private Sub CommandButton1_Click()
Sub test()

Dim shtInput As Worksheet
Dim shtOutput As Worksheet
Dim intSidsteraekke As Integer
Dim intInputraekke As Integer
Avatar billede kim1a Ekspert
15. maj 2018 - 13:11 #11
Du skal slette min "sub test()" og "end sub", da du selv har lavet makroens start med din "private sub com..", jeg antager der ligger en end private sub end også i bunden.
Avatar billede anskov Mester
15. maj 2018 - 13:15 #12
Hmmmm, du får lige hele koden :-), jeg føler mig godt nok dum.

Private Sub CommandButton1_Click()

Dim shtInput As Worksheet
Dim shtOutput As Worksheet
Dim intSidsteraekke As Integer
Dim intInputraekke As Integer

'find sidste række med data så der kopieres ind i næste række
intSidsteraekke = Sheets("Sheet3").Cells(Sheets("sheet3").Rows.Count, "A").End(xlUp).Row
intInputraekke = intSidsteraekke + 1

' kopier fra input til output
Sheets("Rapportering").Cells(intInputraekke, 1) = Sheets("Start").Range("B4").Value
Sheets("Rapportering").Cells(intInputraekke, 2) = Sheets("Start").Range("B6").Value
Sheets("Rapportering").Cells(intInputraekke, 3) = Sheets("Start").Range("B7").Value
Sheets("Rapportering").Cells(intInputraekke, 4) = Sheets("Start").Range("B13").Value
Sheets("Rapportering").Cells(intInputraekke, 5) = Sheets("Start").Range("B15").Value
Sheets("Rapportering").Cells(intInputraekke, 6) = Sheets("Start").Range("B17").Value
Sheets("Rapportering").Cells(intInputraekke, 7) = Sheets("Start").Range("B19").Value
Sheets("Rapportering").Cells(intInputraekke, 8) = Sheets("Start").Range("B21").Value
Sheets("Rapportering").Cells(intInputraekke, 9) = Sheets("Start").Range("B23").Value
Sheets("Rapportering").Cells(intInputraekke, 10) = Sheets("Start").Range("A25").Value
Sheets("Rapportering").Cells(intInputraekke, 11) = Sheets("Start").Range("B34").Value

Private sub end
Avatar billede kim1a Ekspert
15. maj 2018 - 14:19 #13
Der skal kun stå "end sub" til sidst.
Avatar billede anskov Mester
15. maj 2018 - 14:27 #14
Tak kim, du har løst det.
jeg havde skrevet sub end :-)

Nu skal jeg bare have B34 til at ligge +1 til værdien i cellen når der bliver trykket.

Kan man gøre at når man har trykket på knappen, så gemmer den og bagefter lukker?
Avatar billede anskov Mester
15. maj 2018 - 14:31 #15
Den første har jeg klaret ved
Range("B34") = Range("B34") + 1
Avatar billede kim1a Ekspert
15. maj 2018 - 14:41 #16
Altså gemmer og lukker arket?

ThisWorkbook.Close savechanges:=True

Det forudsætter dog at den er gemt tidligere - altså ikke åbnet fra en email f.eks.
Avatar billede anskov Mester
15. maj 2018 - 14:51 #17
Ja, helt fantastisk
Avatar billede anskov Mester
15. maj 2018 - 14:57 #18
Jeg ved godt jeg er ved at være godt træls...men jeg har noget betinget formatering i cellerne B13..15..17.. osv... hvor de skifter farve. Kan jeg få farven kopiret med over? Jeg tænker det så er lettere at overskue og måske sortere.
Avatar billede kim1a Ekspert
16. maj 2018 - 08:47 #19
Jeg tror du skal til at oprette et nyt spørgsmål :-) de andre ser ikke det her.
Din kopi-linje skal ændres, se mere her: https://stackoverflow.com/questions/25768023/excel-copy-conditional-formatting-remove-rules-keep-format

Husk at overveje om det er den betingede formattering du vil have med over, eller om det bare er "resultatet af den".
Avatar billede anskov Mester
16. maj 2018 - 12:15 #20
Du har så ret Kim, jeg opretter ny trå, tak for din hjælp ind til videre.
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

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