• 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.

Opgelost VBA code MacOS

Dit topic is als opgelost gemarkeerd

bartvt78

Gebruiker
Lid geworden
16 mrt 2017
Berichten
187
Besturingssysteem
Mac OS en Windows Parallels
Office versie
Office 365
Beste forumleden. Ik heb met behulp van Chatgpt een vba code te maken voor data te importeren in een excel sheet. Dit is na vele pogingen gelukt voor Windows. Nu wou ik deze code ook maken voor MacOS. Dit is ook grotendeels gelukt, maar 1 lijn code blijft moeilijk doen, en ik vind er geen info of oplossing voor. Het enige dat ik vind hierover is dat Excel voor MacOS anders zijn lijnen beheerd. Ik denk dat een voorbeeld excel geen toegevoegde waarde heeft voor dit probleem, dus zet ik er ook geen voorbeeldje bij. Moest dit nodig zijn kan ik altijd nog een kort voorbeeldbestandje maken eventueel.
Het stukje code is
JavaScript:
lastRow = importedWs.Cells(importWs.Rows.Count, "A").End(xlUp).Row

Alvast hartelijk dank voor eventuele antwoorden.
Mvg, Bart
 
Hey snb, allereerst hartelijk dank voor het antwoord. Gewoon een vraagje. Het tellen moet pas beginnen op rij 8 in kolom A. En in jou formule staat -1462, maar als ik zo naar beneden scrol, zijn er meer dan 4162 rijen in een excel sheet in de Mac_OS versie. Ik wil de formule gewoon kunnen begrijpen. Ik heb ze nog niet in mijn VBA gestoken om te testen. Dat ga ik morgen doen.
 
Die -4162 staat gewoon voor xlUp net als in jouw code.
 
Zoals in het Direct venter kan worden gezien:
1759522225979.png
 
Nu is hij doorgegaan op die lijn code, en het correct aantal lijnen berekend. (Heb ik kunnen zien in het venster van lokale variabelen. Maar nu zit de vba vast op de volgende lijn. En volgens chatgpt is alles correct.
Code:
lastRow = importedWs.Cells(Rows.Count, 1).End(-4162).Row

    If lastRow >= 8 Then
        targetWs.Range("B8:G" & lastRow).Value = importWs.Range("A8:F" & lastRow).Value
 
Ik verwacht dat 'ie wat anders zegt dan: "ik zit vast".
 
Laatst bewerkt:
De foutmelding is "fout 424, Object vereist", en de regel
Code:
If lastRow >= 8 Then
        targetWs.Range("B8:G" & lastRow).Value = importWs.Range("A8:F" & lastRow).Value
is waar de vba stopt.
 
Er is niets mis met de werkbladen. In de windows versie loopt de VBA perfect, zonder fouten. Het is enkel in de MacOS versie dat die hierop vastloopt. TargetWs is de excel waar de data naartoe moet geschreven worden, en ImportWs is de file waar de data staat. De ImportWs is een .xls bestand, de TargetWs is een .xlsm bestand.
 
En je hebt gecontroleerd of de objecten ImportWs en TargetWs op het moment van die foutmelding wel bestaan?
 
ImportWs bestaat dus niet als Worksheet object.
Dat zal importedWs moeten zijn.
 
Laatst bewerkt:
Waarom wordt de laatste rij bepaalt in werkbook 'ImportedWs' en de waarden opgehaald van 'ImportWS'?
 
Dat is inderdaad de fout. Daar heb ik dus al 2 dagen over gekeken. Dat is een domme fout. Hartelijk dank om me hierop te wijzen. Nu werkt het wel. Soms zit je dus met de oplossing voor je neus en zie je de fout niet. Nog een prettig weekend. Ik kan nu verder.
 
Terug
Bovenaan Onderaan