Avatar billede hjald8 Nybegynder
13. december 2004 - 21:23 Der er 7 kommentarer og
1 løsning

Opret ark og kopier ark via makro

Hej

Jeg vil gerne kopier et ark indenfor en projektmappe. Arket skal kopieres og navngives i forhold til indholdet i en liste fx. defineret som: Range("B1", Range("B1").End(xlDown))

Jeg håber, at én kan hjælpe med at evt. at kombinere nedenfor viste makroer, således at der ud fra ovennævnte liste oprettes tilsvarende antal ark med kopi af indholdet i oprindeligt ark1.

Jeg har fundet følgende makroer, som hver for sig fungere fint.
Den første kopiere indholdet, den næste opretter og navngiver:

MAKRO1
Sub KopiArk()
    For x = 1 To 300
        Sheets.Add
        Sheets("Ark1").Cells.Copy
        ActiveSheet.Paste
        Sheets("Ark1").Select
    Next x
End Sub

MAKRO2
Sub OpretArk()
    Dim c As Range
    For Each c In Range("B1", Range("B1").End(xlDown))
        Worksheets.Add(after:=Worksheets("Ark1"), Type:=xlWorksheet).Name = c.Value
    Next
    Worksheets("Ark1").Activate
End Sub

Makroen må samtidig gerne udfra en liste (Range("A1", Range("A1").End(xlDown)) kopiere celleværdier ind i en bestemt celle (fx. "A1") i hvert af de nye ark. Kan man det?

På forhånd tak for hjælpen.
Avatar billede kabbak Professor
13. december 2004 - 21:37 #1
Sub Makro3()

    Cells.Select
    Selection.Copy
    Sheets.Add
    ActiveSheet.Paste
    ActiveSheet.Name = Range("B1").value 'får navnet fra B1
    Range("A1").Select
End Sub
Avatar billede hjald8 Nybegynder
14. december 2004 - 18:32 #2
Tusind tak for input.
Denne makro har løst mit første problem:

Dim c As Range
    For Each c In Range("B1", Range("B1").End(xlDown))
        Sheets("Ark1").Activate
        Cells.Copy
        Worksheets.Add(after:=Worksheets("Ark1")).Name = c.Value
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1").Select
    Next
    Sheets("Ark1").Activate

Opgaven med at kopier celleværdier fra en liste (Range("A1", Range("A1").End(xlDown)) ud på de respektive ark - samtidig, har jeg ikke kunne få til at lykkes. Håber på lidt hjælp til dette, hvis det kan lade sig gøre?
Avatar billede kabbak Professor
14. december 2004 - 19:20 #3
er det flere ark du vil kopierer ellers forstår jeg det ikke ?
Avatar billede hjald8 Nybegynder
15. december 2004 - 06:30 #4
Det er ikke flere ark der skal kopieres. Det er kun et ark, der skal kopieres ud fra en liste, som er i et andet ark.

Men den liste (2 kolonner - ved siden af hinanden) indeholder navnene på de nye ark, men ud for hvert navn er der en værdi, som skal forhåbentlig også kan indsættes i de respektive ark.

Jeg ved ikke om det forklare det bedre.
Avatar billede kabbak Professor
15. december 2004 - 08:22 #5
Public Sub LavArk()
Dim c As Range
    For Each c In Range("B1", Range("B1").End(xlDown))
        Sheets("Ark1").Activate
        Cells.Copy
        Worksheets.Add(after:=Worksheets("Ark1")).Name = c.Value
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1") = c.Offset(0, 1).Value ' sætter værdien fra kolonne til højre for C, samme række, ind i A1

    Next
    Sheets("Ark1").Activate
End Sub
Avatar billede hjald8 Nybegynder
15. december 2004 - 22:11 #6
Tusind tak, det virker bare. Læg et svar.

Hvis man vil have værdier fra 2 kolonner til højre for c i samme række overført?
Hvorledes skal denne så konstrueres:  Range("A1") = c.Offset(0, 1).Value
Jeg har prøvet men ikke fundet ud af det.

Jeg har nu gentaget den for de celler (kolonner i samme række), jeg vil have overført. Når det går så hurtigt og smart, bliver man jo fordringsfuld.

Men mange tak. Meget stor hjælp.
Avatar billede kabbak Professor
16. december 2004 - 00:05 #7
c.Offset(Række, Kolonne)

Række =  0 samme række
række = -1  rækken ovenover
række = 1  rækken nedenunder
Kolonne = 1 en kolonne til højre
Kolonne = -1 en kolonne til venstre
Avatar billede kabbak Professor
16. december 2004 - 09:10 #8
tak for point
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