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

Zijn er verschillen in de VBA-code tussen Excel Office365 (2016) en Excel2007-2010?

  • Onderwerp starter Onderwerp starter jmv
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jmv

Gebruiker
Lid geworden
19 jun 2010
Berichten
74
Ons programma werkt zowel in Excel2007 als in Excel2010
Maar sinds kort gebruiken we Office365 (Excel2016)
Gevolg de VBA-code geeft fout 400, we kunnen de oorzaak niet vinden, misschien iemand van jullie?

Echter een klein probleem kan het bestand niet toevoegen het is 15,5 MB groot, hoe kunnen we het bestand u bezorgen?
 
Als je een Office 365 abonnement met Desktop Install hebt zou dat weinig verschil moeten maken.
Plaats de code waarin dat gebeurt eens hier en laat weten op welke regel dat dan gebeurt.
 
Hier het bestand

Heb het bestand kleiner dan 1 MB gemaakt om te kunnen opladen.

Open het programma en klik op de knop “Verslag maken”
Het paswoord indien nodig zie bestandsnaam 123.
 

Bijlagen

Het vreemde is dat ik de eerste poging wel de foutmelding krijg maar de tweede poging doet ie het prima.

Probleem lijkt in het Tabblad Els te zitten.

En als ik de code in de VBE draai, komt de foutmelding ook niet.
 
Laatst bewerkt:
Hier nog wat toelichting

Als je het programma draait op Excel 2007 of 2010, wordt het tabblad Stop (blad17) weergegeven tijdens de uitvoering van de VBA-procedure en werkt dan foutloos en dit vanaf de eerste keer.
Draai je het op Excel365 (2016) desktopversie dan komt het tabblad ‘Stop’ niet tevoorschijn en krijg je fout 400, programma stop dan op tabblad Els na het uitzetten van filter in kolom A. (De paswoorden van de tabbladen zijn dan allemaal uitgezet zoals het hoort)
Ga je dan naar het tabblad ‘Ingavepagina’ en druk je op de toets ‘Verslag maken’ dan wordt de procedure foutloos uit gevoerd.
Het heeft iets te maken met het aanroepen van het verborgen tabblad 17 (tabblad ‘Stop’).
 
Je bevind je in een ander blad en gaat dan ineens handelingen in blad1 doen. Dit trekt ie niet.

Code:
[COLOR="#FF0000"] Blad1.Activate[/COLOR]
' kopieer de (namen) cellen AT5 tem AT5005 en plak ze in H5 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AT5:AT5005").Select
    Blad1.Range("AT5:AT5005").Copy
    Blad1.Range("H5").Select
    Blad1.Range("H5").PasteSpecial xlPasteValues  ' doel kolom

' kopieer de (kinesisten) cellen AC6 tem AC5005 en plak ze in M6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AC6:AC5005").Select
    Blad1.Range("AC6:AC5005").Copy
    Blad1.Range("M6").Select
    Blad1.Range("M6").PasteSpecial xlPasteValues  ' doel kolom

' kopieer de(betaalmodus) cellen AF6 tem AF5005 en plak ze in E6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AF6:AF5005").Select
    Blad1.Range("AF6:AF5005").Copy
    Blad1.Range("E6").Select
    Blad1.Range("E6").PasteSpecial xlPasteValues  ' doel kolom

Blad1.Range("AR6:AS5005").ClearContents ' maak de cellen vanaf AR6 tem AS5005 leeg


Zet Blad1.Activate erboven en volgens mij ben je van de foutmelding af.
 
Fout 400

Inderdaad de fout 400 is weg, maar het programma werkt anders in Excel365 dan in Excel2007, namelijk na ‘Ja’ antwoorden moet het ‘Stop’ scherm (tabblad17) getoond worden tijdens het uitvoeren van de VBA.
In Excel2007 gebeurt dit maar niet in Excel365 (2016)
Wat kan hier de oorzaak van zijn?
 
Het waarom is mij ook onbekend.
 
SjonR, hartelijk dank voor uw hulp, kunt me zeggen met welke instructie je een verborgen tabblad zichtbaar op het scherm plaatst?
 
Excel 2016 heeft de vervelende gewoonte om, als je de beveiliging van alle werkbladen in een loopje eraf haalt, soms (!) het laatste blad uit de loop te activeren. Dus in code als deze:
Code:
For ipw = 1 To Worksheets.Count
Sheets(ipw).Unprotect Password:=ww
Next
 
Tabblad 17 is niet zichtbaar wel in Excel 2007

Dag Jan Karel Pieterse, hoe moet het dan?
Probleem is dat het tabblad 17 niet zichtbaar is tijdens het uitvoeren van de VBA-procedure maar wel het tabblad 1, graag hier een oplossing voor. Draai het programma in oudere Excel versie dan is tabblad17 zichtbaar tijdens de uitvoering.
 
Het houdt in dat je voor het weghalen of plaatsen van de beveiliging het huidige actieve werkblad moet laten onthouden en het erna weer moet activeren:

Code:
Dim oActive As Worksheet
Set oActive = ActiveSheet
'Beveiligingscode hier
oActive.Activate
 
Je zou ook kunnen werken met Userinterfaceonly qua beveiliging, hoeft eea er ook niet af.
Daarnaast kun je jouw code eens wat proberen op te schonen en al die Selects, Activates en activesheets eruit te halen.
 
Dan zal je toch in de code die de UIOnly optie gebruikt nog steeds moeten waken dat dezelfde sheet geselecteert blijft na de actie. NIet omdat het voor andere code zou mogen uitmaken, maar gewoon omdat het onfatsoenlijk is ongevraagd een ander werkblad te selecteren.
 
Ja Eric er staan wel enkele ’Activate’ te veel, maar beter één te veel dan één te weinig, zie ‘fout 400’ en de oplossing van SjonR.
Heeft er iemand van jullie het programma als eens gedraaid op verschillende Excel versies?
En zo het verschil in gedrag van blad17, “Stop” scherm waargenomen.
 
De meeste problemen voorkom je door helemaal niet meer te selecteren maar aan de code te vertellen over welk werkblad je het hebt.

Dit:
Code:
    ' kopieer de (namen) cellen AT5 tem AT5005 en plak ze in H5 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AT5:AT5005").Select
    Blad1.Range("AT5:AT5005").Copy
    Blad1.Range("H5").Select
    Blad1.Range("H5").PasteSpecial xlPasteValues  ' doel kolom

    ' kopieer de (kinesisten) cellen AC6 tem AC5005 en plak ze in M6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AC6:AC5005").Select
    Blad1.Range("AC6:AC5005").Copy
    Blad1.Range("M6").Select
    Blad1.Range("M6").PasteSpecial xlPasteValues  ' doel kolom

    ' kopieer de(betaalmodus) cellen AF6 tem AF5005 en plak ze in E6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AF6:AF5005").Select
    Blad1.Range("AF6:AF5005").Copy
    Blad1.Range("E6").Select
    Blad1.Range("E6").PasteSpecial xlPasteValues  ' doel kolom
kan je vervangen door:

Code:
    Blad1.Range("AT5:AT5005").Copy
    Blad1.Range("H5").PasteSpecial xlPasteValues  ' doel kolom

    ' kopieer de (kinesisten) cellen AC6 tem AC5005 en plak ze in M6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AC6:AC5005").Copy
    Blad1.Range("M6").PasteSpecial xlPasteValues  ' doel kolom

    ' kopieer de(betaalmodus) cellen AF6 tem AF5005 en plak ze in E6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("AF6:AF5005").Copy
    Blad1.Range("E6").PasteSpecial xlPasteValues  ' doel kolom

of zelfs door:

Code:
    Blad1.Range("H5:H5005").Value = Blad1.Range("AT5:AT5005").Value

    ' kopieer de (kinesisten) cellen AC6 tem AC5005 en plak ze in M6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("M6:M5005").Value = Blad1.Range("AC6:AC5005").Value

    ' kopieer de(betaalmodus) cellen AF6 tem AF5005 en plak ze in E6 (alleen waarde) aanpassing hoofdletters
    Blad1.Range("E6:E5005").Value = Blad1.Range("AF6:AF5005").Value
 
Laatst bewerkt:
Ik zou zeggen niet enkele maar alle en zeker liever niet 1 teveel
Jouw fout 400 komt omdat er (onnodig) vanuit een andere aktieve sheet getracht wordt om Blad1.Range("AT5:AT5005").Select te selecteren (dit zou kunnen komen door de melding van JKP over de vervelende gewoonte)
Het werkt wel wanneer je hierboven sheets(1).activate neerzet.

De code zou veel sneller zijn wanneer je al de overbodige (gebruikers) handelingen uit jouw code zou elimineren
Daarnaast zou ik de code die niet bestemd is voor Blad1 ook niet daarin plaatsen, oftewel de macro in een gewone module zetten.
En deze macro opdelen in wat kleinere procedures welke je dan 1 voor 1 aanroept in jouw 'hoofd'-macro
 
Ik heb alle door jullie aangebrachte tips uitgeprobeerd, maar niets laat het STOP-scherm (blad17) zien tijdens het uitvoeren van de VBA-procedure, in Excel 2007 zie ik blad17 wel tijdens het uitvoeren van de VBA.
Is er bij jullie niemand die de 2 Excel versies bezit en dit kan uittesten? Excel 2007 & Excel 2016.
Hopelijk is er toch nog een goede ziel die het eens wil uittesten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan