Avatar billede Lasse_WA Juniormester
27. oktober 2023 - 12:48 Der er 8 kommentarer og
2 løsninger

Nybegynder søger hjælp til makro

Hej

Jeg skal havde lavet en makro der kan indsætte en ny linje i en tabel i arket "Data", kopiere data fra 3 forskellige celler i arket "registrering" denne del virker fint. men hvis jeg kører makroen igen så indsættes det nye data oveni det gamle. MEN hvordan får jeg den til at starte i en ny række hver gang?

På forhånd tak

Makro jeg har optaget ser sådan ud:

Sub Makro10()
'
' Makro10 Makro
'

'
    Sheets("Data").Select
    Range("A55").Select
    Selection.ListObject.ListRows.Add AlwaysInsert:=True
    Range("A56").Select
    Sheets("Registrering").Select
    Range("C4").Select
    Selection.Copy
    Sheets("Data").Select
    Range("A56").Select
    ActiveSheet.Paste
    Sheets("Registrering").Select
    Range("C6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Data").Select
    Range("B56").Select
    ActiveSheet.Paste
    Sheets("Registrering").Select
    Range("F6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Data").Select
    Range("C56").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
Avatar billede kim1a Ekspert
27. oktober 2023 - 15:23 #1
Din udfordring er at du har faste referencer, du skal nok læse lidt om offset eller måske kan du skrukturere din makro så kan arbejde i en kolonne ad gangen.

Du kopierer fra fanen registrering C4, C6 og F6 - er det altid disse celler, eller skifter de også?
En ide er at lave en variabel med værdierne fra disse celler - a la:
variabel1 = sheets("Registrering").range("C4").value

Kan du generisk beskrive hvad du skal gøre? Hvordan vælger du hvor der skal indsættes linje?
Avatar billede Lasse_WA Juniormester
27. oktober 2023 - 15:37 #2
Det er altid fra cellerne C4, C6 og F6 at data skal hentes fra.
De tre celler skal benyttes til at indtaste initialer, fornavn og efternavn. Min tanke var så at koble makroen op på en kanp der kunne flytte data fra disse 3 celler over i et andet ark, der skal bruges til opslag. Hvert input fra de 3 celler skal lagres i en ny række hver gang.
Avatar billede kim1a Ekspert
27. oktober 2023 - 18:17 #3
Ah okay, så handler det om at lave en variabel som viser hvilken række der er tom, det kan blot være. Din makro kan se sådan ud:
Sub Makro10()
Dim intSidsteRaekke As Integer
intSidsteRaekke = Worksheets("Data").Range("A1").End(xlDown).Row
Sheets("Registrering").Range("C4").Copy Sheets("Data").Cells(intSidsteRaekke + 1, 1)
Sheets("Registrering").Range("C6").Copy Sheets("Data").Cells(intSidsteRaekke + 1, 2)
Sheets("Registrering").Range("F6").Copy Sheets("Data").Cells(intSidsteRaekke + 1, 3)
End Sub
Avatar billede Lasse_WA Juniormester
02. november 2023 - 23:44 #4
Super kim1a tak for hjælpen.

Lige et tillægs spørgsmål, hvordan forhindre jeg at min formatering fra cellen der bliver kopieret fra følger med over i den nye celle, f.eks. hvis der er gitterlinjer omkring en celle.
Avatar billede kim1a Ekspert
03. november 2023 - 08:05 #5
Så skal du have det i to linjer:
Sheets("Registrering").Range("C4").Copy
Sheets("Data").Cells(intSidsteRaekke + 1, 1).PasteSpecial Paste:=xlPasteValues
Avatar billede Lasse_WA Juniormester
06. november 2023 - 14:04 #6
Hej Kim1a

tak for hjælpen. Jeg har nu sat det op i 2 linjer. Som sådan her:
Sub Personinfo()
Dim intSidsteRaekke As Integer
intSidsteRaekke = Worksheets("Data").Range("A1").End(xlDown).Row
Sheets("Registrering").Range("C4").Copy
Sheets("Data").Cells(intSidsteRaekke + 1, 1).PasteSpecial Paste:=xlPasteValues
Sheets("Registrering").Range("C6").Cut
Sheets("Data").Cells(intSidsteRaekke + 1, 2).PasteSpecial Paste:=xlPasteValues
Sheets("Registrering").Range("F6").Cut
Sheets("Data").Cells(intSidsteRaekke + 1, 3).PasteSpecial Paste:=xlPasteValues
End Sub

Men jeg får fejl på denne linje "Sheets("Data").Cells(intSidsteRaekke + 1, 2).PasteSpecial Paste:=xlPasteValues"

Hvad gør jeg forkert?
Avatar billede kim1a Ekspert
06. november 2023 - 17:27 #7
Hvorfor Cut fremfor copy? Måske er der noget her. Man kan (tror jeg) ikke klippe og så sætte ind på anden vis end hvordan det ser ud.
Avatar billede Lasse_WA Juniormester
06. november 2023 - 17:34 #8
Cut for at få data væk fra cellerne. Men måske det kan løses på anden vis.
Avatar billede kim1a Ekspert
06. november 2023 - 22:00 #9
Ja, du kan evt. bare fjerne dem i makroen efterfølgende:
Sheets("Registrering").Range("F6").ClearContent tror jeg nok den hedder.

Alternativt kunne du måske formattere dem som du ønsker de skal sættes ind også og så bare bruge den oprindelige?
Avatar billede Lasse_WA Juniormester
07. november 2023 - 07:33 #10
Tak for hjælpen kim1a det hjalp.
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