lexcellern
Gebruiker
- Lid geworden
- 15 okt 2015
- Berichten
- 130
Ik ben blij met al jullie hulp en zit voorlopig nog in het werkende krijgen van de 1e aangedragen, waarschijnlijk te lange code, maar gek genoeg loopt ie daarop fout.
De foutmelding is gek genoeg: Fout 9, subscript valt buiten bereik.
De foutopsporing laat zien dat het in de regel ThisWorkbook.Sheets("Import").Copy zit.
Alsof ie die tabblad "Import" niet ziet.
ik heb goed gelet op spaties, spelling, hoofdletters enz.
Ik maak overigens gebruik van een extra hulp tabblad 'temp' om ervoor te zorgen, dat als ik uit het tabblad 'januari' regels selecteert die niet onder elkaar staan, toch onder elkaar te krijgen.
Iemand een idee waarom ie fout loopt?
Als ik die fout eruit krijg, kan ik misschien trachten een kortere code te krijgen, maar eerst iets werkends.
Hieronder de code.
De foutmelding is gek genoeg: Fout 9, subscript valt buiten bereik.
De foutopsporing laat zien dat het in de regel ThisWorkbook.Sheets("Import").Copy zit.
Alsof ie die tabblad "Import" niet ziet.
ik heb goed gelet op spaties, spelling, hoofdletters enz.
Ik maak overigens gebruik van een extra hulp tabblad 'temp' om ervoor te zorgen, dat als ik uit het tabblad 'januari' regels selecteert die niet onder elkaar staan, toch onder elkaar te krijgen.
Iemand een idee waarom ie fout loopt?
Als ik die fout eruit krijg, kan ik misschien trachten een kortere code te krijgen, maar eerst iets werkends.
Hieronder de code.
Code:
Sub VulImport()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet
Set ws = Application.ActiveSheet
Dim LastRow As Long
Dim LastRow2 As Long
' Kopieer alle geselecteerde rijen naar worksheet "temp"
Selection.Copy Destination:=Sheets("temp").Range("A1")
With Sheets("Import")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow + 1
.Cells(i, "A").Value = ""
.Cells(i, "B").Value = ""
.Cells(i, "C").Value = ""
.Cells(i, "D").Value = ""
.Cells(i, "F").Value = ""
.Cells(i, "G").Value = ""
.Cells(i, "H").Value = ""
.Cells(i, "I").Value = ""
.Cells(i, "J").Value = ""
.Cells(i, "K").Value = ""
.Cells(i, "L").Value = ""
.Cells(i, "S").Value = ""
Next i
LastRow2 = Sheets("temp").Cells(Rows.Count, "K").End(xlUp).Row
For j = 2 To LastRow2 + 1
.Cells(j, "A").Value = Sheets("temp").Cells(j - 1, "K").Value
.Cells(j, "B").Value = Sheets("temp").Cells(j - 1, "O").Value
.Cells(j, "C").Value = Sheets("temp").Cells(j - 1, "N").Value
.Cells(j, "D").Value = Sheets("temp").Cells(j - 1, "M").Value
.Cells(j, "F").Value = Sheets("temp").Cells(j - 1, "P").Value
.Cells(j, "G").Value = Sheets("temp").Cells(j - 1, "Q").Value
.Cells(j, "H").Value = Sheets("temp").Cells(j - 1, "R").Value
.Cells(j, "I").Value = Sheets("temp").Cells(j - 1, "T").Value
.Cells(j, "J").Value = Sheets("temp").Cells(j - 1, "U").Value
.Cells(j, "K").Value = Sheets("temp").Cells(j - 1, "AR").Value
.Cells(j, "L").Value = Sheets("temp").Cells(j - 1, "AS").Value
If Sheets("temp").Cells(j - 1, "V").Value = "Nederland" Then
' .Cells(j, "S").Value = "NE"
.Cells(j, "M").Value = 3085
ElseIf Sheets("temp").Cells(j - 1, "V").Value = "België" Then
' .Cells(j, "S").Value = "BE"
.Cells(j, "M").Value = 4950
End If
Next j
End With
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Import").Copy
ActiveWorkbook.SaveAs Filename:="C:\temp\export.csv", FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close
Application.DisplayAlerts = True
Sheets("temp").Cells.ClearContents
End Sub