Avatar billede Christian Praktikant
19. september 2019 - 15:55 Der er 1 kommentar

Kopiering igennem VBA Loop funktion

Hej alle,

Jeg står med et ret træls problem. Jeg skal have kopieret en masse værdier over i en template, hvor jeg pt. gør det manuelt. Derfor har jeg prøvet at lave en VBA kode, hvor jeg som dum som jeg nu er, har skrevet kopiering af hver linje som har gjort filen er for stor. Derfor bliver jeg nok nødt til at lave en loop, hvilket jeg dog er helt stuck på. Her er et udsnit af min kode;

Sub Test2()
' Test2 Macro

Dim FileName As String
FileName = ""

With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Select File"
    .Filters.Add "Excel File", "*.xls?"
    .AllowMultiSelect = False

    If .Show Then
        FileName = .SelectedItems(1)
    End If
End With
If Len(FileName) < 4 Then Exit Sub 'No file selected

Dim TempWorkbook As Workbook, currentSheet As Worksheet
Set currentSheet = ActiveSheet 'Store the ActiveSheet, it will change
Set TempWorkbook = Workbooks.Open(FileName, ReadOnly:=True)

currentSheet.Range("U6").FormulaR1C1 = "=" & TempWorkbook.Worksheets("FINAL FORM").Cells(15, 7).Address(True, True, xlR1C1, True)

currentSheet.Range("B8").FormulaR1C1 = "=" & TempWorkbook.Worksheets("FINAL FORM").Cells(13, 3).Address(True, True, xlR1C1, True)

currentSheet.Range("T8").FormulaR1C1 = "=" & TempWorkbook.Worksheets("FINAL FORM").Cells(18, 2).Address(True, True, xlR1C1, True)
currentSheet.Range("T9").FormulaR1C1 = "=" & TempWorkbook.Worksheets("FINAL FORM").Cells(19, 2).Address(True, True, xlR1C1, True)
currentSheet.Range("T10").FormulaR1C1 = "=" & TempWorkbook.Worksheets("FINAL FORM").Cells(20, 2).Address(True, True, xlR1C1, True)
currentSheet.Range("T11").FormulaR1C1 = "=" & TempWorkbook.Worksheets("FINAL FORM").Cells(21, 2).Address(True, True, xlR1C1, True)

TempWorkbook.Close SaveChanges:=False
Set TempWorkbook = Nothing
Set currentSheet = Nothing

End Sub


Som koden viser, så kopiere den fra et dokument jeg vælger, hvorefter den egentlig bare tager de værdier jeg har assigned. Næste kopiering er fuldstændig det samme bare 4 rows længere nede i begge ark. Derfor tænker jeg, at man må kunne lave en loop der kopiere den første og derefter adder 4 rows for de næste 30 kopieringer?

Håber I kan hjælpe! Tak
Avatar billede Slettet bruger
20. september 2019 - 10:53 #1
du kan loope med for - next og bruger "step 4" til at angive, at hver loop kører med 4 mere

for index 1 to 20 step 4
next

så er det jo bare at indsætte det det rette sted og finde en god index-range du kan bruge :)
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
Kurser inden for grundlæggende programmering

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