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

Celpositie bepalen

Status
Niet open voor verdere reacties.

jv345

Gebruiker
Lid geworden
25 mrt 2007
Berichten
167
Hallo,

Ik heb een bestandje waaraan een macro is gekoppeld om een automatische indexering toe te passen op de eerste invoer.
Deze macro werkt perfect indien de gebruiker zich wel aan de regels houdt.
Hierbij bedoel ik dat de cursor rechts van de cel moet staan om de indexering door te voeren.
Ik heb 2 extraatjes gemaakt: 1 waarbij er een 0 is ingevoerd en 1 waarbij er nog geen waarde is ingevuld.
Het probleem wat ik heb is dat als de gebruiker een cijfer ingevoerd heeft en op enter drukt de cursor 1 rj naar beneden gaat; als hij echter op de rechterpijl toets drukt gaat het wel goed.
Bestaat er een oplossing??
( zie het voorbeeldbestandje)
 

Bijlagen

Hoi

Als je de gebruiker nu eens de "broncel" laat aanduiden met Application.Inputbox, en een 8 daarbij als Type (zie helpfiles).

En dan daarmee verder werken in de code.

Dan heb je geen probleem meer zoals je nu hebt.

Al geef ik wel toe dat dit verder gaat dan het niveau van de code die je op dit moment hebt (zonder minachting geschreven; dit is een vaststelling, geen waardeoordeel :thumb: en wat niet is kan nog komen).

Wigi

PS: het is vbCritical en niet bCritical.
 
Wigi,

Bedankt voor je opbouwende maar juiste opmerking.
Ik ben nog maar een beginner.
Je hebt gelijk wat betreft de vbCritical. Leuk is wel dat het zonder de v toch werkt!!
Ik ga je raad opvolgen en zoeken naar informatie om de broncel aan te laten wijzen.
Heb er echter wel een hard hoofd in dat het gaat lukken. Je moet namelijk eens weten hoe lang ik met deze macro bezig bent geweest.:D
 
Je hebt gelijk wat betreft de vbCritical. Leuk is wel dat het zonder de v toch werkt!!

:D:D:D LOL

Het werkt ja, in die zin dat de code niet blijft hangen.

Maarreuh... alleen komt er niet het stukje dat zorgt voor de vbCritical (de rode bol met witte kruis).

Wigi
 
Wigi,

Je wordt bedankt.:D
Dacht ik het eindelijk goed te hebben...maar je hebt gelijk. Ik heb het verschil nu goed kunnen zien.:thumb:

Persoonlijk heb ik grote moeite met de hulpfunctie van VBA. Er zijn zoveel verschillende opties. (methode, eigenschappen enz. enz ). Ook met de voorbeelden zit ik behoorlijk te stoeien.
Maar ja we mogen niet klagen.....er is in ieder geval een help aanwezig.
Kortom ik heb de komende uren weer wat te doen.:D
 
Jv345, Kijk 'ns naar deze zwaar verkorte uitvoering van jouw codeblokje...
Code:
Sub Indexering()
Dim lRij As Long

    lRij = ActiveCell.Row()
          
    With Cells(lRij, 1)
        If .Value = 0 Or .Value = "" Then
            MsgBox "Ik weet niet welk getal u wilt indexeren!" & Chr(13) & _
                   "Selecteer het gewenste getal in kolom A...", vbOKOnly + vbCritical, "Niet toegestaan"
            Exit Sub
        Else:
            .Offset(0, 1).Value = .Value * [1.02]
            .Offset(0, 2).Value = .Value * [1.02 ^ 2]
            .Offset(0, 3).Value = .Value * [1.02 ^ 3]
            .Offset(0, 4).Value = .Value * [1.02 ^ 4]
        End If
    End With

End Sub
Zo zie je dat je een hoop regels niet dubbel (of sowieso niet) hoeft te programmeren (óók dit is goed bedoelde hulp:))

Het 'dwingen' van de code om de gebruiker de juiste cel te laten selecteren heb ik iets anders afgevangen dan Wigi's voorstel.

Groet, Leo

P.s. O ja, in je 2e IF-blokje wil je waarschijnlijk uitvragen of je cel 'leeg' is. Dat doe je met aaneengesloten dubbele quotes (""). Jij laat nu controleren of er een spatie in de cel aanwezig is...
 
Laatst bewerkt:
Volgende stap in het leerproces is een lus :thumb:

Code:
Sub Indexering()
    
    Dim lRij As Long
    [B]Dim i As Integer[/B]
    
    lRij = ActiveCell.Row
    
    With Cells(lRij, 1)
        If .Value = 0 Or .Value = "" Then
            MsgBox "Ik weet niet welk getal u wilt indexeren!" & Chr(13) & _
                   "Selecteer het gewenste getal in kolom A...", vbCritical, "Niet toegestaan"
            Exit Sub
        Else
[B]            For i = 1 To 4
                .Offset(0, i).Value = .Value * 1.02 ^ i
            Next[/B]
        End If
    End With

End Sub

Wigi
 
Ginger en Wigi,

Bedankt voor jullie reacties en oplossingen.
De lusoplossing van Wigi is nieuw voor mij.:thumb:
Zeker gelet op het feit dat de oplossing van Ginger erbij staat, zijn de verschillen goed te zien en kan ik het volgen.

Ik begrijp 1 dingetje niet. Waar staat de Chr(13) voor? Via de help wordt wel nr 10 aangegeven maar de rest is voor mij toch wel onduidelijk. Wat doet dit precies en waarom heb je dit nodig in de formule?

Nu ik deze mooie oplossing bekijk, zie ik ook gelijk een nieuwe "uitdaging" om het geheel nog gebruikersvriendelijk te maken.
Nu wordt namelijk voor de komende 4 jaar in 1 keer de indexering uitgevoerd.
Nogmaals dat was ook de hoofdvraag.

Is het echter ook mogelijk om bijv maar 2 jaren te indexering? Stel je wilt alleen 2011 en 2012 indexeren.
Ik ben hiermee aan te slag gegaan om dit via een messagebox te vragen.
Bijv: hoeveel jaar wilt u indexeren?

Ik loop hiermee steeds in de val. Leuk werk die macro's.:D
Het is dan van belang waar de cursor staat en eigenlijk wil je ook voorkomen dat de gebruiker 1,2,3 of 4 moet intoetsen. Ik hoop dit in de messagebox af te vangen.

Nogmaals mijn hartelijke dank voor jullie oplossingen en wellicht hebben jullie nog een goede raad voor mij.
 
Jv345, Als je veel ' te communiceren' hebt met de gebruiker, vind ik het meestal makkelijker om een zelfgemaakte userform te gebruiken ipv een msgbox of een inputbox. Werk op zo'n userform dan met checkboxen en optionbuttons waarmee je in 1 klap uitvraagt wat een gebruiker wil.

Groet, Leo
 
Leo,

Bedankt voor je reactie.
Ik ben een beginner dus je geeft me heel wat nieuwe informatie: userform en checkboxen en dergelijke.
Ik hoop dat ik iets kan vinden bij de helpfunctie hierover. Weer een nieuwe uitdaging.:thumb:
 
Wigi,

Bedankt voor je informatie.
Ik ga dit zeker verder uitproberen.

Ik zal de vraag sluiten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan