Deel van de code activeren indien de cursor zich binnen een bepaald bereik bevindt

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste Helpmij'ers,

Ik zit met de volgende twee vragen.

Vraag 1
Ik heb een vba-code die zo groot is dat het programma erg traag wordt, nu had ik bedacht dat lang niet alles van deze code van toepassing is wanneer ik mij begeef in een deel van de excelsheet. Daarom heb ik bedacht wanneer de cursor zich binnen kolom C t/m J bevindt de code voor een deel uitgevoerd moet worden en wanneer ik mij begeef tussen kolom K t/m Z het andere deel van de code geactiveerd moet worden.

Zelf denk ik in de richting van:
Code:
If Target.Column = 3 then
Alleen moet na de 3 een toevoeging komen bijv. ..... 10 (het bereik dus).

Vraag 2
Ik ben op zoek naar de vba-code waar de cursor i.p.v. naar onderen naar rechts gaat bij een enter. Ik weet dat je dat in excel kunt inschakelen, maar dan geldt dat voor alle bestanden in Excel. Het is dus de bedoeling dat het alleen voor een bepaalde sheet van toepassing is.

Alvast heel erg bedankt en hoor graag het antwoord(en).

Robert
 
Voor het afbakenen van een bereik kan je intersect gebruiken.

voor het verplaatsen van de cursor kan je application.goto gebruiken
 
Hartelijk dank voor jouw antwoord.

Ik gebruik nu ook al:
Code:
If Not Intersect(Target, Union(Columns("A:U"), Columns(20))) Is Nothing Then
en heb daar mee geëxperimenteerd. Alleen gaat hij dan nog steeds de hele code bij langs wanneer ik mij binnen dat bereik in excel begeef. Ik wil juist dat het systeem maar een deel van de codes bij langs gaat.

Wat betreft
Code:
Application.GoTo .Offset(, 1)
gebruik ik ook al. Vanuit excel 2010 ging dat ook prima, echter ik gebruik nu excel 2019 en daar gaat de cursor eerst naar beneden en vervolgens naar de gewenste kolom.
 
Over 1 regel code is natuurlijk niet te zeggen.

De cursor gaat altijd eerst naar beneden en dan naar de gewenste kolom. Afhankelijk van de snelheid en de gebruikte grafische effecten zie je dit wel of niet.
 
Daarom mijn vraag of het mogelijk is om via een vba-code nadat er een enter wordt gegeven in plaats van dat de cursor naar beneden gaat maar dan naar rechts. Eigenlijk op dezelfde wijze wanneer je via opties dit voor heel excel wijzigt.
 
Stel het dan in bij het activeren en deactiveren van een sheet of workbook met
Code:
Application.MoveAfterReturnDirection
 
Ik heb in Thisworkbook de code bij onderstaande voorbeeld geplaatst en krijg nu de melding: Compileerfout: Ongeldig gebruik van een eigenschap

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Resultaatoverzicht" Then
    Application.MoveAfterReturnDirection
    Sh.ListObjects("tabel1").Range.AutoFilter 19, "show"
End If
end sub
 
Je geeft in de code ook niet aan wat de richting moet worden. Maak gebruik van de ingebouwde helpfunctie als je niet weet hoe je bepaalde zaken moet gebruiken.
 
Sorry, ik ben helaas te onervaren en vind dit ook nog niet zo vervellend. Heb je misschien wel een oplossing voor het eerste probleem, daar heb ik eigenlijk meer baat bij.
 
Als je iets opgelost wil krijgen dan moet je er wat moeite voordoen. Hoe moeilijk kan het zijn om Application.MoveAfterReturnDirection even in de help of via google te zoeken.
over vraag 1
Over 1 regel code is natuurlijk niets te zeggen.
 
Top, ik heb de oplossing.

Application.MoveAfterReturn = True
Application.MoveAfterReturnDirection = xlToRight

Mocht er nog een optie op het eerste probleem dan hoor ik het graag. In ieder geval heel erg bedankt voor jouw hulp
 
Voor de derde keer! Zonder de code te weten is er niets te zeggen over vraag 1.
 
Dat begrijp ik, de code is vele A4-tjes. Ik zal kijken of ik een voorbeeldcode kan maken. Sorry voor het ongemak.
 
Je hebt met op een idee gebracht om te googlen, ik heb het ook met mijn eerste vraag gedaan en heb de oplossing gevonden. nl.
Code:
 If Target.Column < 9 Then

Nogmaals heel erg bedankt voor het meedenken en het aandragen van de oplossing.
 
Code:
If Not Intersect(Target, Union(Columns("A:U"), Columns(20))) Is Nothing Then
Kolom 20 = T
T valt binnen A-U.

Nergens voor nodig om Union te gebruiken dus.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan