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

Automatische indexering

Status
Niet open voor verdere reacties.

jv345

Gebruiker
Lid geworden
25 mrt 2007
Berichten
167
Hallo,

Wat ik hoop te bewerkstelligen is het volgende.

Stel Cel A5 is ingevuld met het getal 1000.
Als er op een knop (op het werkblad) geklikt wordt dan wordt automatisch een macro gestart waarbij de cellen B5, C5, D5 en E5 automatisch worden berekend.
Deze berekening houdt in: ieder jaar 2 % indexering verhoging tov het vorige jaar.
Dus voor B5 is dat dus 1000 x 1,02, voor C5 is dat 1000 x 1,02^2 enz.

Het hieboven genoemde voorbeeld moet uiteindelijk werken op ieder gewenst deel van het werkblad.
De basis van berekening ligt altijd 1 cel links van de cel waarop de berekening losgelaten moet worden.

Ik heb een stukje macro getracht te maken waarbij ik eerst letters benoemd hebt die staan voor de berekening:
A=1,02
B=1,02^2
C= 1,02^4 enz
Dan wil ik dat de cel links geslecteerd wordt en dat hierbij de berekening uitgevoerd wordt.
Hier gaat het mis.
Wie weet een oplossing?
 
Hoop dat ik het goed heb begrepen.

Cobbe
 
Laatst bewerkt:
Cobbe,

Op zich heb je het juist wat betreft de berekening.
Het stuk macro die dit, op een willekeurige cel in het werkblad automatisch uitrekent ontbreekt.
Juist met de macro loop ik iedere keer vast.
 
Voor elke cel toepasbaar :(behalve de laatste 3 kolommen)

Code:
Sub Macro1()
  ActiveCell.Offset(0, 0) = ActiveCell.Offset(0, -1) * [a1] ^ [B1]
  ActiveCell.Offset(0, 1) = ActiveCell.Offset(0, -1) * [a1] ^ [C1]
  ActiveCell.Offset(0, 2) = ActiveCell.Offset(0, -1) * [a1] ^ [D1]
  ActiveCell.Offset(0, 3) = ActiveCell.Offset(0, -1) * [a1] ^ [E1]
End Sub

En met de waarde 1.02 in A1 en de machten in B1,C1,D1,E1

Cobbe
 
Cobbe,

Het werkt, dank je wel.
Ik had het mezelf veel te moeilijk gemaakt.
 
Cobbe,

Nogmaals bedankt voor je oplossing.
Ik ben echter wat verder gegaan.
Ik wil bereiken dat als de cursor zich bevind in kolom 10 waarbij de waarde 0 is of als er helemaal geen waarde ingevuld staat er een messagebox getoond wordt.
Alleen bij een ingevulde waarde van boven de € 1 wordt dan de indexering uitgerekend.
Ik ben geen macro-expert want ik blijf in een soort van loop terecht komen.
Het gedeelte van als er geen waarde is ingevuld heb ik even uitgezet.
Waar gaat het fout??

Een tweede vraag: is het ook mogelijk om standaard in een macro op te nemen dat de getallen altijd om een waarde van € 100 naar beneden worden afgerond ( afronden beneden.( cel; 100)

Bijgaande mijn stukje macro.


Code:
Sub Indexering()
 
   If ActiveCell(0, 10) = 0 Then
  
       MsgBox ("Ik weet niet welk getal u wilt indexeren ?"), bCritical, "Niet toegestaan"
          Application.EnableEvents = False
          ActiveCell = ""
          Application.EnableEvents = True
        Exit Sub
     End If
     
  '  If Cells.Value(0, 10) = "" Then
       
  '    MsgBox ("Ik weet niet welk getal u wilt indexeren ?"), bCritical, "Niet toegestaan"
  '        Application.EnableEvents = False
   '       ActiveCell = ""
  '         Application.EnableEvents = True
  '     Exit Sub
  '   End If
     
   If ActiveCell(0, 10) > 1 Then
         ActiveCell.Offset(0, 0) = ActiveCell.Offset(0, -1) * [1.02]
         ActiveCell.Offset(0, 1) = ActiveCell.Offset(0, -1) * [1.02 ^ 2]
         ActiveCell.Offset(0, 2) = ActiveCell.Offset(0, -1) * [1.02 ^ 3]
         ActiveCell.Offset(0, 3) = ActiveCell.Offset(0, -1) * [1.02 ^ 4]
   End If

End Sub
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan