badmintonstanden inlezen vanuit verschillende tabs (VBA)

Status
Niet open voor verdere reacties.

linnie1987

Gebruiker
Lid geworden
28 jun 2009
Berichten
5
Hallo!

Ik heb dringend hulp nodig bij het programmeren van een programma.
Ik moest een eindopdracht maken voor dit vak. Hierbij worden badmintonstanden verwerkt. Eerst wordt er via een userform het thuis en uitteam ingevuld met bijbehorende aantal punten (0 t/m 8) en datum. Deze komen dan in het eerste tabblad te staan in een tabel.
Vervolgens wordt er per badmintonteam een tab aangemaakt met alleen de wedstrijden die ze zelf hebben gespeeld (dus in tabblad "Team 1" staan alleen de wedstrijden met bijbehorende punten en datum vermeld van Team 1). Echter de ene keer staat Team 1 in kolom B en de andere keer in kolom C. Dit wordt gedaan met de volgende code:

Code:
'Opzoek de teams en sorteer de data in het tabblad
For y = 0 To CB_team_thuis.ListCount - 1
Call Opzoeken(werkrange, CB_team_thuis.List(y))
Application.Worksheets("Invoer").Activate
Next

For y = 0 To CB_team_uit.ListCount - 1
Call Opzoeken(werkrange, CB_team_uit.List(y))
Application.Worksheets("Invoer").Activate
Next

Vervolgens was het de bedoeling dat de tussenstanden werden ingelezen in een nieuw tabblad (stand). Hierin moest het aantal opgetelde aantal punten voor en punten tegen worden ingelezen. Hier gaat het echter fout.
Heeft iemand enig idee hoe ik dit moet aanpakken???
Bij voorbaat dank!

Groetjes Linda
 
badmintonstanden

Ik heb de vraag misschien niet helemaal goed gesteld. Ik heb gezegd dat er met bovenstaande code de tabs worden aangemaakt per team. Dit klopt natuurlijk niet helemaal. Dit wordt gedaan door Call Opzoeken. Ik heb voor de duidelijkheid het programma in de bijlage toegevoegd. Misschien dat het dan duidelijker is wat ik bedoel.

Groetjes Linda
 

Bijlagen

Op een ander forum is voorgesteld om het aantal punten voor en het aantal punten tegen te berekenen met som.als (in VBA is dit worksheetfunction.sumif).
Ik krijg nu echter een fout bij punten_voor(i) (zie bestandje): er wordt een matrix verwacht. De code is als volgt:
Code:
Sub punten_voor()

Dim punten_voor As Long
Dim werksheet As Worksheet

For Each werksheet In Application.Worksheets
    For i = 3 To Application.Worksheets.Count
        Application.Worksheets(i).Activate
        Set werkrange = werksheet.Range("A1").CurrentRegion
        
        punten_voor(i) = (WorksheetFunction.SumIf(Range("B1:B6"), Application.Worksheets(i).Name, Range("D1:D6"))) + (WorksheetFunction.SumIf(Range("C1:C6"), Application.Worksheets(i).Name, Range("E1:E6")))
        
        Application.Worksheet("totaal").Activate
        Cells(i - 1, 2) = punten_voor(i)
    Next i
Next werksheet

End Sub

Weet iemand wat ik fout doe?

Linda

Ps. ik heb het voorbeeldbestandje ook toegevoegd.
 
Vermijd select en activate in VBA, want overbodig, vertragend en verwarrend.
Streef naar eenvoud.

bijvoorbeeld

Code:
Private Sub UserForm_initialize()
  CB_punten_thuis.list=split("0|1|2|3|4|5|6|7|8","|")
  CB_punten_uit.list=CB_punten_thuis.list

  CB_team_thuis.List=split("Emmen|Groningen|Assen|Coevorden|Hoogeveen|Vlagtwedde|Dalen","|")
  CB_team_uit.list=CB_team_thuis.list

  TB_datum.Value = Date
End Sub

Doet exact hetzelfde (zonder enige variabele) als:

Code:
Private Sub UserForm_initialize()
Dim werkrange As Range
Dim vaItems As Variant
Dim i As Long
Dim j As Long
Dim vTemp As Variant
    
CB_team_thuis.Clear
CB_team_uit.Clear
CB_punten_thuis.Clear
CB_punten_uit.Clear

'instellen werkrange
Set werkrange = Range("A1").CurrentRegion

'lijst scores
For i = 0 To 8
    CB_punten_thuis.AddItem i
    CB_punten_uit.AddItem i
Next i

'Lijst thuisteam
    Me.CB_team_thuis.AddItem "Emmen"
    Me.CB_team_thuis.AddItem "Groningen"
    Me.CB_team_thuis.AddItem "Assen"
    Me.CB_team_thuis.AddItem "Coevorden"
    Me.CB_team_thuis.AddItem "Hoogeveen"
    Me.CB_team_thuis.AddItem "Vlagtwedde"
    Me.CB_team_thuis.AddItem "Dalen"

'Lijst uitteam
    Me.CB_team_uit.AddItem "Emmen"
    Me.CB_team_uit.AddItem "Groningen"
    Me.CB_team_uit.AddItem "Assen"
    Me.CB_team_uit.AddItem "Coevorden"
    Me.CB_team_uit.AddItem "Hoogeveen"
    Me.CB_team_uit.AddItem "Vlagtwedde"
    Me.CB_team_uit.AddItem "Dalen"

TB_datum.Value = Date

End Sub
 
Laatst bewerkt:
Bedankt voor je reactie!

Ondertussen heb ik het programma al wel werkend gekregen. Maar hierin komt vrij veel activate in voor. Hoe kan ik dit dan vermijden?
Ik heb het bestandje in de bijlage gevoegd.
 

Bijlagen

Inmiddels heb ik het programma afgetekend gekregen. Bedankt voor de hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan