[VBA Excel] Macro vereenvoudigen

Pagina: 1
Acties:

  • Batsies
  • Registratie: Mei 2002
  • Laatst online: 27-01-2022

Batsies

E-Developing

Topicstarter
Zie onderstaande macro, deze wil ik vereenvoudigen, deze macro pakt een range van 5 getalleen onder elkaar en somt die op onderaan en berekend het percentage van ieder getal t.o.v totaal.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub perccalc()
Dim Bereik As Range
Set Bereik = Selection
Bereik(6, 1) = Bereik(1, 1) + Bereik(2, 1) + Bereik(3, 1) + Bereik(4, 1) + Bereik(5, 1)
Bereik(1, 2) = Bereik(1, 1) / Bereik(6, 1 )
Bereik(2, 2) = Bereik(2, 1) / Bereik(6, 1 )
Bereik(3, 2) = Bereik(3, 1) / Bereik(6, 1 )
Bereik(4, 2) = Bereik(4, 1) / Bereik(6, 1 )
Bereik(5, 2) = Bereik(5, 1) / Bereik(6, 1 )
Bereik(6, 2) = Bereik(6, 1) / Bereik(6, 1 )
Bereik(1, 2).NumberFormat = "0.00%"
Bereik(2, 2).NumberFormat = "0.00%"
Bereik(3, 2).NumberFormat = "0.00%"
Bereik(4, 2).NumberFormat = "0.00%"
Bereik(5, 2).NumberFormat = "0.00%"
Bereik(6, 2).NumberFormat = "0.00%"
End Sub

Deze macro wordt d.m.v loops vereenvoudigd, de berekening heb ik al vereenvoudigd en de cel weergave ook, toen kwam het om regel 4 te verenvoudigen, lukt wel, maar de som en de 100% onderaan doet het niet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub perccalc()
Dim Bereik As Range
Dim bereiknew As Double

Set Bereik = Selection

For i = 1 To 6
bereiknew = bereiknew + Bereik(i, 1)
Next i


For i = 1 To 6
    Bereik(i, 2) = Bereik(i, 1) / bereiknew
    Bereik(i, 2).NumberFormat = "0.00%"
Next i

End Sub


Wat doe ik fout hier, hij zet namelijk in de de 6e cel geen totaal en ook geen 100% daarnaast

E-Developing


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Maar wordt er wel iets neergezet?

Volgens mij moet trouwens de eerste loop maar tot 5 gaan, want nu tel je bij bereiknew ook nog Bereik(6,1) op en dat gebeurt niet in de eerste macro.

  • Batsies
  • Registratie: Mei 2002
  • Laatst online: 27-01-2022

Batsies

E-Developing

Topicstarter
Bereik(i, 6) = bereiknew, dat moet tussen de loops geplaatst worden. Dat was ik vergeten, i.i.g bedankt

E-Developing