Code verkorten

Status
Niet open voor verdere reacties.

Boverduyn

Gebruiker
Lid geworden
4 mrt 2016
Berichten
61
Beste experts,

Weet iemand hoe ik deze code iets korter kan maken?
WorksheetFunction.Sum(Me.Score1a, Me.Score2a, Me.Score3a, Me.Score4a, Me.Score5a, Me.Score6a, Me.Score7a, Me.Score8a, Me.Score9a) > Excel.WorksheetFunction.Sum(Me.Score1b, Me.Score2b, Me.Score3b, Me.Score4b, Me.Score5b, Me.Score6b, Me.Score7b, Me.Score8b, Me.Score9b)

Ik heb een userform waarin 2 spelers verschillende uitslagen moeten invullen.
Uiteindelijk zijn er 2 opgetelde uitslagen van a en van b.
Ik kom er niet uit om dit via een loop te doen en op internet zie ik ook niks staan.

Kan iemand helpen?
Alvast bedankt
 
In een loop zou het zo kunnen, maar of je dan nog van korter kunt spreken?

Code:
Sub SjonR()

Dim SomA As Integer, SomB As Integer
For i = 1 To 9
    SomA = SomA + Controls("Score" & i & "a")
    SomB = SomB + Controls("Score" & i & "b")
Next
If SomA > SomB Then ...............

End Sub
 
Code:
msgbox Score1a+Score2a+Score3a+Score4a+Score5a+Score6a+Score7a+Score8a+Score9a > Score1b+Score2b+Score3b+Score4b+Score5b+Score6b+Score7b+Score8b+Score9b
 
Ook toevallig enig idee hoe ik dit beter kan doen?

sh.Cells(laat, 3) = Me.Score1b
sh.Cells(laat, 4) = Me.Score2b
sh.Cells(laat, 5) = Me.Score3b
sh.Cells(laat, 6) = Me.Score4b
sh.Cells(laat, 7) = Me.Score5b
sh.Cells(laat, 8) = Me.Score6b
sh.Cells(laat, 9) = Me.Score7b
sh.Cells(laat, 10) = Me.Score8b
sh.Cells(laat, 11) = Me.Score9b
sh.Cells(laat, 12) = Me.ComboBox1a

ben beniewd
thanks!
 
zo?

Code:
For i = 1 To 9
    sh.Cells(laat, i + 2) = Controls("Score" & i & "b")
Next
sh.Cells(laat, 12) = ComboBox1a
 
In 1 keer wegschrijven is sneller.

Code:
sh.Cells(laat, 3).Resize(, 10) = Array(Score1b, Score2b, Score3b, etc)
 
Dan kun je wellicht beter die scorevakken meteen bij de start in een afzonderlijke Array zetten:

Code:
Dim sn

Private Sub UserForm_Initialize()
    ReDim sn(Controls.Count)
    
    For Each it In Controls
      Set sn(it.TabIndex) = it
      y = it.TabIndex
    Next
    
    ReDim Preserve sn(y)
End Sub

Private Sub UserForm_Click()
    MsgBox Evaluate(Join(sn, "+"))
    Cells(1).Resize(, UBound(sn) + 1) = sn
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan