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

Range("A1").Select wordt niet volledig uitgevoerd.

Status
Niet open voor verdere reacties.

jafrako

Gebruiker
Lid geworden
13 jan 2007
Berichten
170
Besturingssysteem
Win 365
Office versie
Office 365
Ik heb een grote verzamel macro voor reset doeleinden. Aan het eind heb ik daar een commando's om in alle tabbladen de home positie te selecteren. In feite wat Ctrl.Home doet. Het gebruikte commando dat je in de titel van mijn vraag ziet heb ik gevonden door met lopende macrorecorder Ctrl.Home te kiezen.

Dat Range(xxx).Select commando kiest niet de homepositie maar de cel die bij het maken van het commando is ingegeven. Als ik daarna de blokkeringen wijzig waarmee je tevens de home positie wijzigt dan blijft het Range(xxx).Select commando naar de eerder gekozen cel gaan. Er bestaat kennelijk geen commando dat de op enig moment vigerende homepositie kiest. Ik heb er in mijn geval geen problemen mee maar ik noem het omdat er misschien toch iemand is die een passen commando kent.

Waar ik wel last van heb en waar mijn vraag over gaat is het volgende. Die reset macro voert een paar A4-tjes aan opdrachten uitv en is dus nogal bezig. Onlangs heb ik er aan het begin een opdracht in gezet de schermvernieuwing uit te schakelen en aan het eind een opdracht die weer in te schakelen. Pas dan komt de opdracht de home positie te selecteren. Maar sinds die laatste vernieuwing wordt weliswaar de gewenste home cel geselecteerd maar het scherm blijft staan op de voorlaatste positie ergens in het blad. In de vorige versies waarin het aan en uitzetten van die schermvernieuwing er niet was bestond het genoemde probleem niet.

De opdracht Application.Goto Reference:="R1C1" die hetzelfde doet als Range.Select reageert hetzelfde. Geen oplossing dus.

Bij de loutere selectie van de home cel is het scherm niet betrokken maar wel als die cel in beeld gebracht moet worden. Kennelijk is het weer inschakelen van de schermvernieuwing dan nog niet voltooid hoewel die opdracht er eerder was.

Iemand ideeën?
 
Die Range("A1").Select moet je wel per werkblad doen. Bijvoorbeeld zo:
Code:
Dim cs As String
cs = ActiveSheet.Name
For Each sh In ThisWorkbook.Sheets
    sh.Select
    ActiveSheet.Range("A1").Select
Next sh
Sheets(cs).Select
 
Die reset macro voert een paar A4-tjes aan opdrachten uitv en is dus nogal bezig

Waarschijnlijk een nogal grote macro-opname met ontzettend veel inefficiënte code?
 
Waarschijnlijk een nogal grote macro-opname met ontzettend veel inefficiënte code?

Nee het is weliswaar een grote maar ik denk een heel cleane macro. Het gaat om een fotoarchief met een zich uitbreidende hoeveelheid records (nu ca 20.000) van een historische vereniging. Er is sprake van 194.000 actieve formules in hyperlink kolommen, controle kolommen en kolommen met in zoekformules ingebedde celsprongformules van het ene tabblad naar het andere. En dat is natuurlijk niet meer vooruit te branden. En ik weet wat je gaat zeggen: hou op met die onzin en koop een goed database programma.

Probleem is dat we een zeer actieve vereniging zijn met ca 1000 enthousiaste oudere leden waarvan ca 100 meewerkend. Maar er mag niets veranderen anders haken ze af. We moeten natuurlijk een keer overstappen naar een database maar nu even niet.

Mijn sheet is een constructie met twee versies ineen: een uitgeklede Inzage- voor diverse niet zo deskundige gebruikers en een uitgebreide Beheerversie. Twee grote macros switchen het ding van de ene naar de andere versie. Naar Inzage worden zo ongeveer alle formules (ook degene die actief lege cellen staan te genereren) gewist totdat er ca 24.000 overblijven het systeem is weer snel. De basisformules staan in een verborgen rij boven de kolommen en in de beheerversie wordt alles open gegooid en vrijgegeven en formules kunnen dan naar believen doorgetrokken worden. Blijven er per abuis kolommen gevuld dan wordt dat opgelost bij een switch naar inzage. Daarin wordt ook de hele layout weer hersteld.

De switch naar beheer duurt een paar seconden en die naar inzage ca twee minuten.

Ik vind het leuk of noem het hobbyen. Ik heb nog de oude HBS-B maar daar in mijn werkzame leven vrijwel niets mee gedaan en toen ik in het digitale tijdperk tegen Excel opliep ging er een wereld voor me open. Ik experimenteer, googel, lees help en gebruik m'n verstand en ik leer nog steeds. Ook in dit geval want sorry, er was geen probleem. Vanmiddag kwam ik erachter dat ik iets fout had gedaan. Eerst Range.Select en pas daarna Schermvernieuwen weer inschakelen en ja dan gaat het fout. Nu opgelost dus.

Dank voor het meedenken.
 
Best een lang wollig verhaal wat niets met de vraag te maken heeft. Schermvernieuwen weer inschakelen doet totaal niets. Maar als jouw vraag hiermee opgelost is dan vind ik het natuurlijk prima.:)
 
Kan ook.
Code:
Dim cs as worksheet, sh as worksheet
with application
  set cs = ActiveSheet
   .screenupdating = false
For Each sh In Sheets
   .goto sh.range("a1")
Next sh
cs.activate
end with
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan