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

Application screenupdating (1)

Status
Niet open voor verdere reacties.

Egbert12345

Gebruiker
Lid geworden
13 dec 2010
Berichten
496
Beste forummers, in een eerdere vraag heb ik iets voorgelegd aangaande application.screenupdating en kreeg nuttige antwoorden, maar ik heb nog een aanvullende vraag gesteld. Kennelijk gaat er iets niet goed (ik kreeg twee keer een e-mail dat er een reactie op mijn vraag was, maar zag die niet), hetgeen ongetwijfeld mijn fout zal zijn, en daarom stel ik de vraag maar opnieuw.

Voorheen werkte ik met office 2010, maar nu met 2016.

Uit de beantwoording van mijn vraag vernam ik dat de nieuwe SDI interface dus kennelijk de oorzaak van het feit dat application.screenupdating nu anders werkt dan ik gewend was in excel 2010. Mijn programma bestaat dus uit twee excelbestanden (programma en een database). Ik wil dus vanuit het programma (dat zichtbaar moet blijven) een paar opdrachten uitvoeren in de database zonder dat dit zichtbaar is. Kan iemand mij aangeven of dat überhaupt nog wel mogelijk is.

m.vr.gr. Egbert
 
Zeker kan dat. Moet je Database zichtbaar zijn (blijiven)?
 
Dat zou wel prettig zijn. Ik ben al bezig geweest met die sheet te verbergen, maar dan ontstaan er weer veel problemen. De macro's wisselen namelijk tussen beide sheets om opdrachten uit te voeren.
 
Voor goede werking van macro's is het wisselen van sheets overbodig. Overal waar je select of activate hebt staan moet er iets aan je code veranderen. ALs je alle selects en activates hebt verwijderd zal je zien dat er ook weinig meer "knippert". Plaats maar eens een stukje code uit je macro's met selects, dan zullen we eens onkruid wieden :)
 
Bedankt Jan Karel, dan moet ik maar eens door die zure appel heen bijten. Jammer dat de heren en dames van microsoft het zo hebben veranderd, maar het is niet anders.
Wil je mij wellicht nog even helpen? Zoals je het voorstelt, dat ken ik in grote lijnen, maar hoe pak ik het volgende op?

Range("G8").Select
Selection.Copy
Range("L15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Dat wijzig ik in: Range("G8").Copy.Range ("L15"), maar waar laat ik PasteValues? In de te kopieren cel kan namelijk een formule staan en ik wil alleen het resultaat kopieren.

gr Egbert
 
Volgens mij is het volgende voldoende:
Code:
Range("G8").Copy
Range("L15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
 
niet alles moet op 1 regel egbert, je moet ook weer niet direct doorslaan :D
microsoft heeft niets gewijzigd, het is gewoon het verschil tussen de code die de macrorecorder uitbraakt en opgeschoonde geschreven code die alleen de noodzakelijke acties vermeld...
De regel die jij hebt neergezet gebruik je als je "normaal" knipt en plakt en als je plakken speciaal gebruikt dan gebruik je gewoon een regel extra code voor het plakken

Code:
Range("G8").Copy
Range ("L15").PasteSpecial Paste:=xlPasteValues
je vervangt dus simpel selection door range()

kijk ook eens naar die underscores "_" en speel met noodzakelijek criteria
een coderegel wordt vaak lomp afgebroken omdat je vroeger kleine beeldschermjes had en er niet zoveel tekens zichtbaar waren maar voegt weinig toe je kunt dat vaak ook op 1 regel kwijt, daarnaast geeft de macrorecorder vaak ook een hoop overbodige optionele code mee die weg kan.
 
Laatst bewerkt:
Zonder copy
Code:
Range("L15").value = Range("G8").Value
 
ook leuk VenA, maar dat werkt in dit specifieke geval omdat hier om 1 cel gaat toch? voor meerdere cellen werkt dit niet
 
Beste allen, bedankt voor de assistentie. Hier kom ik verder mee. Dit wat overigens een plat voorbeeld, ik knikker vaak de overbodige codes weg en werk ook die underscores weg.

PS wat ik bedoelde met wat microsoft heeft gewijzigd is nieuwe SDI interface zoals mij werd verteld. Voorheen kon ik m.b.v. application.screenupdating wisselen tussen beide sheets zonder dat je het zag, maar dat werkt niet meer zoals ik wil.

gr Egbert
 
@roeljongman,
Hoezo werkt dit niet met meerdere cellen.

Probeer dit met copy eens na te bootsen;)

Code:
Range("L15").Resize(, 2) = Array(Range("G8"), Range("F7"))
 
Ik had het als advies begrepen, in ieder geval bedankt, ben tot op de dag van vandaag onder de indruk van jullie expertise
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan