• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

macro probleem

Status
Niet open voor verdere reacties.
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.

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
 
Plaats het bestand maar. Wat je met de code wil is mij een raadsel. Er worden allerlei variabelen gevuld waar je niets mee doet. Waarom tussen elke regel code zoveel lege regels. Je zal ActiveWorkbook en ThisWorkbook wel door elkaar halen maar daar is in de beschrijving van het probleem niets van te vinden.
 
Laatst bewerkt:
Het is eigenlijk hetzelfde bestand dat ik eerder stuurde, maar dan met een leeg tabblad 'temp' erbij.
Zie bijlage
 

Bijlagen

Ook een leeg blad 'Import' wat eerder gevuld was.
 
en een .xlsx? Zal wel niet zo heel veel code instaan.
 
Ook een leeg blad 'Import' wat eerder gevuld was.

Dat klopt, maar dat moet ook leeg zijn voor aanvang. Dit is het tabblad dat gevuld moet worden en waarvan het moet worden opgeslagen als .csv UTF8.
 
en een .xlsx? Zal wel niet zo heel veel code instaan.

Ik begrijp niet precies wat je bedoelt?
De macro is bestemd voor alle (openstaande) werkmappen. Ik werk normaliter ook met een excel persoonlijk waar de macro’s inzitten.
Dus het is me niet geheel duidelijk.
Het probleem is dat de macro vastloopt. Geen idee waarom.
 
Je zal ActiveWorkbook en ThisWorkbook wel door elkaar halen
Blijkbaar gemist?
ThisWorkbook zal dan in jouw geval Personal.xlsb zijn en daar zal vast geen blad 'import' in staan.
 
Oplossing?

Bijgaand bestand doet wat er in eerste instantie werd gevraagd : leegmaken, kopieren en opslaan.
De opslaglocaties moet je natuurlijk wijzigen naar je eigen path.
Er wordt een bestand "Tijdelijk" aangemaakt dat iedere keer automatisch wordt overschreven en verder niet belangrijk is.
Na afwikkeling wordt het nieuwe bestand opgeslagen als "Test", gecodeerd als UTF-8
Het originele bestand wordt daarna gesaved.
Blad 1 is bijgevoegd om in de testfase de gegevens makkelijk te kunnen terugzetten maar dat blad kan je verder gewoon weghalen als je het zelf hebt getest.
Het is een uitgebreide code die zeker korter kan maar hij werkt goed en je kunt dus helemaal volgen wat er gebeurt.
Groet, Willempie
 

Bijlagen

Ik blijf maar met het vreemde probleem zitten dat ik de foutmelding krijg: Fout 9, subscript valt buiten bereik.
Als iemand anders dezelfde macro/spreadsheet gebruikt is er geen foutmelding.
Ik heb zitten speuren op google en zie dat dit probleem vaker voorkomt, maar een oplossing wordt niet echt genoemd.

Kortom: ik lijk een prima macro te hebben, echter op mijn pc komt die melding dat iets (een bepaald tabblad) buiten bereik is, terwijl de benamingen gewoon voorkomen.
Ik snap er niets van en kom maar niet verder.
 
Als je eerst even zegt welke macro je gebruikt dan is het wat gerichter zoeken.
Heb je al geprobeerd om te kijken wanneer het probleem zich voordoet?
Bij Foutzoeken kan je regels onderbreken; zo kan je zien bij welke regel het probleem zich voordoet.
Indien je mijn macro gebruikt : heb je cel AA1 verplaatst of weggehaald of bij verplaatsen aanpassen in de macro?
Die cel bepaalt de laatste regel op de actieve worksheet dus als je meer worksheets hebt dan zal je dat moeten aanpassen en dus op AA1 dezelfde formule moeten zetten. Dan wel even kijken of die verwijst naar een regel die altijd gevuld is.
 
Laatst bewerkt:
Beste Lexcellern,
Heb je nog gekeken naar mijn aangepaste bericht? Waarschijnlijk is het iets met cel AA1.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan