[VBA Excel] Probleem met het berekenen van geslaagd/gezakt

Pagina: 1
Acties:
  • 217 views sinds 30-01-2008
  • Reageer

  • HarryL
  • Registratie: Januari 2003
  • Laatst online: 17-11-2025

HarryL

127.0.0.1

Topicstarter
Ik heb in excel een stukkie geprogrameerd, die geslaagd of gezakt moet uitrekenen.
Alleen het probleem is, dat hij overal geslaagd neer zet wat dus niet de bedoeling is.
hieronder mijn code:
Het bovenste gedeelte met de kleuren werkt zoals het hoort, hier staat ook de range waaruit hij de gegevens moet halen.
Ik heb al verschillende dingen geprobeerd, maar kan mijn fout helaas niet ontdekken....


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub kleurCijfer()

    Dim c As Range, kleur As Long
    
    For Each c In Range("C3:I20")
    Select Case c.Value
        Case Is < 5.5: kleur = vbRed
        Case Is > 5.5: kleur = vbGreen
    End Select
    c.Font.Color = kleur
    Next c
End Sub

Sub Geslaagd()
    Dim Onvoldoendes As Integer
        
    Worksheets("Eindresultaat").Activate
    
    For leerling = 1 To 18
        Onvoldoendes = 0
        
        kaas$ = "G" & Format(leerling + 3) & ":" & "J" & Format(leerling + 3)
        For Each c In Range(kaas$)
            Select Case c.Value
                Case Is < 5.5: Onvoldoendes = Onvoldoendes + 1
            End Select
        Next c
        
 ' Kaas is een soort temp. plek.
 
        kaas$ = "J" & Format(leerling + 2)
        If Onvoldoendes > 3 Then
            Range(kaas$).Value = "Gezakt"
        Else
            Range(kaas$).Value = "Geslaagd"
        End If
    Next leerling
End Sub

I have gone to find myself, if I get back before I return, Please keep me here! PSNID: djmagich


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Waarom gebruik je niet gewoon een simpele If functie in MS Excel hiervoor, zonder VBA? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • HarryL
  • Registratie: Januari 2003
  • Laatst online: 17-11-2025

HarryL

127.0.0.1

Topicstarter
gorgi_19 schreef op 20 september 2004 @ 21:52:
Waarom gebruik je niet gewoon een simpele If functie in MS Excel hiervoor, zonder VBA? :)
Omdat wij dit voor school MET vba moeten doen :S

I have gone to find myself, if I get back before I return, Please keep me here! PSNID: djmagich


  • HarryL
  • Registratie: Januari 2003
  • Laatst online: 17-11-2025

HarryL

127.0.0.1

Topicstarter
Ik heb de code wat aangepast, nu pakt hij alleen mijn 3e regel niet.
De rest werkt nu goed, alleen hoe krijg ik het zo dat de 2e regel het ook doet?
Hieronder de code die tot zover werkt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub Geslaagd()
    Dim Onvoldoendes As Integer
        
    Worksheets("Eindresultaat").Activate
    
    For leerling = 1 To 18
        Onvoldoendes = 0
        
        kaas$ = "C" & Format(leerling + 3) & ":" & "J" & Format(leerling + 3)
        For Each c In Range(kaas$)
            Select Case c.Value
                Case Is < 5.5: Onvoldoendes = Onvoldoendes + 1
            End Select
        Next c
        
 ' uitkomst is een soort dummy.
 
        uitkomst$ = "J" & Format(leerling + 3)
        If Onvoldoendes > 3 Then
            Range(uitkomst$).Value = "Gezakt"
        Else
            Range(uitkomst$).Value = "Geslaagd"
        End If
    Next leerling
End Sub

I have gone to find myself, if I get back before I return, Please keep me here! PSNID: djmagich


  • HarryL
  • Registratie: Januari 2003
  • Laatst online: 17-11-2025

HarryL

127.0.0.1

Topicstarter
Na lang verder zoeken enzo heb ik het probleem opgelost :)

De code is uiteindelijk geworden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub Geslaagd()
    Dim Onvoldoendes As Integer
        
    Worksheets("Eindresultaat").Activate
    
    For leerling = 1 To 18
        Onvoldoendes = 0
        
        kaas$ = "C" & Format(leerling + 2) & ":" & "J" & Format(leerling + 2)
        For Each c In Range(kaas$)
            Select Case c.Value
                Case Is < 5.5: Onvoldoendes = Onvoldoendes + 1
            End Select
        Next c
        
 ' uitkomst is een soort dummy.
 
        uitkomst$ = "J" & Format(leerling + 2)
        If Onvoldoendes > 3 Then
            Range(uitkomst$).Value = "Gezakt"
        Else
            Range(uitkomst$).Value = "Geslaagd"
        End If
    Next leerling
End Sub


Ik zag dat ik een aantal verschillende cijfers had, die verschillende rijen aangaven, daardoor werkte het dus niet :)

I have gone to find myself, if I get back before I return, Please keep me here! PSNID: djmagich