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

hoe deze select case vereenvoudigen

Status
Niet open voor verdere reacties.

glda19

Terugkerende gebruiker
Lid geworden
14 jan 2008
Berichten
1.068
Dus in de keuzelijst staat bv kredietdag, kredietdag voormiddag kredietdag namiddag

StrVerLofCodeKeuze haalt de gekoze afwezigheid uit keuzelijst.

zou ik dit kunnen gebruiken

if hasWord = InStrStrVerLofCodeKeuze, "Voormiddag") > 0 '// returns TRUE or FALSE
elseif hasWord = InStrStrVerLofCodeKeuze, "namiddag") > 0 '// returns TRUE or FALSE
else
hasWord =volledige dag
endif
en dan de onderstaande code aanpassen


Code:
StrAfwezigheidsCodeSplit = Split(StrVerLofCodeKeuze, " ")
IntWordentellen = UBound(StrAfwezigheidsCodeSplit()) + 1

'Het rijnummer op het datatablad  van de geselecteerde afwzigheidscode in de coombox gaan opzoeken.
'Afankelijk daarvan de waarde van de afwzeigheidscode er boven en onder of 2 x onder opvragen
IntAfwezigheidscodeRij = OpzoekenAfwezigheidsCodeRij(StrVerLofCodeKeuze)
Select Case IntWordentellen
    Case "1" 'één woord = Hele dag één woord
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 2).Value  ' Waarde voor de voormiddag en namiddag
        DblAantalCellenInBereik = IntAantalCellenInBereik ' Waarde voor de hele dag
        
    Case "2" And StrAfwezigheidsCodeSplit(1) = "verlof" 'Hele dag 2 woorden collectief verlof
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 2).Value  ' Waarde voor de voormiddag en namiddag
        DblAantalCellenInBereik = IntAantalCellenInBereik ' Waarde voor de hele dag
          
    Case "2" And StrAfwezigheidsCodeSplit(1) = "voormiddag" ' 2 woorden en 2de Voormiddag
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 1).Value  ' Waarde voor de volledige dag en voor de namiddag
         DblAantalCellenInBereik = IntAantalCellenInBereik / 2 ' Gaat om een halve dag dus het bereik telt maar voor de helft mee.
       
        
    Case "2" And StrAfwezigheidsCodeSplit(1) = "namiddag" '2 woorden en 2de Namiddag
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 2).Value  ' Waarde voor de volledige dag en de voornamiddag
        DblAantalCellenInBereik = IntAantalCellenInBereik / 2 ' Gaat om een halve dag dus het bereik telt maar voor de helft mee.
        
    Case "3" And StrAfwezigheidsCodeSplit(2) = "voormiddag" ' 3 woorden en 2de Voormiddag
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 1).Value  ' Waarde voor de
        DblAantalCellenInBereik = IntAantalCellenInBereik / 2 ' Gaat om een halve dag dus het bereik telt maar voor de helft mee.
        
    Case "3" And StrAfwezigheidsCodeSplit(2) = "namiddag" '3 woorden en 2de Namiddag
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 2).Value  ' Waarde voor de volledige dag en de voornamiddag
        DblAantalCellenInBereik = IntAantalCellenInBereik / 2 ' Gaat om een halve dag dus het bereik telt maar voor de helft mee.
    
    Case "3" And StrAfwezigheidsCodeSplit(1) = "vorig" '3 woorden en 2de Vorig  Verlof vorig jaar
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 2).Value  ' Waarde voor de volledige dag en de voornamiddag
        DblAantalCellenInBereik = IntAantalCellenInBereik   ' Waarde voor de hele dag
     
    
    
    Case "4" And StrAfwezigheidsCodeSplit(3) = "voormiddag" ' 4 woorden en 4de Voormiddag
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij + 1).Value  ' Waarde voor de
        DblAantalCellenInBereik = IntAantalCellenInBereik / 2 ' Gaat om een halve dag dus het bereik telt maar voor de helft mee.
        
    Case "4" And StrAfwezigheidsCodeSplit(3) = "namiddag" '4 woorden en 4de Namiddag
        DblAantalAndereAfwezigheidsDagen = Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 1).Value + _
        Worksheets("Datablad").Range("c" & IntAfwezigheidscodeRij - 2).Value  ' Waarde voor de volledige dag en de voornamiddag
        DblAantalCellenInBereik = IntAantalCellenInBereik / 2 ' Gaat om een halve dag dus het bereik telt maar voor de helft mee.
    
    
End Select
 
Niet.
Je hebt er meerdere keren Case "2" in staan.
Zo ook Case "3" en Case "4"
Daar is Select Case niet voor.
 
Laatst bewerkt:
Maar gaat wel telkens met een anderbij voedsel achter.
Bv 2 worden 2de word voormiddag.
Of hoe zou het beter zijn?
 
Hij zal nooit die 2e "2" pakken.
Wat ik al zei, daar is Select Case niet voor.
 
De opdrachten die bij "2" horen allemaal bij de eerste "2" zetten en de 2e "2" verwijderen.
Zo ook voor "3" en "4".
 
Laatst bewerkt:
Is wel 2 and split(1)=”voormiddag " dus zal hij wel de 2de 2 nemen
 
Je snapt het niet.
Select Case zal NOOIT de 2e "2" pakken.
 
Ìs heel simpel: je doet een check op één variabele: intWoordenTellen. Die bevat dus maar één waarde. De select case kijkt naar die waarde, en als die gevonden wordt, wordt de Select case van die waarde uitgevoerd. Is altijd de eerste. Al zet je er 100 neer, de overige 99 worden nooit gevonden. Je zult dus alle vervolgcode onder dat nummer moeten zetten. Iets als:
Code:
Dim ws As Worksheet


    strACS = Split(StrVerLofCodeKeuze, " ")
    IntWordentellen = UBound(strACS()) + 1
    Set ws = Worksheets("Datablad")
    iACR = OpzoekenAfwezigheidsCodeRij(StrVerLofCodeKeuze)
    
    Select Case IntWordentellen
        Case 1
            dblAAD = ws.Range("c" & iACR + 1).Value + ws.Range("c" & iACR + 2).Value
            dblACIB = IntAantalCellenInBereik
        Case 2
            If strACS(1) = "verlof" Then
                dblAAD = ws.Range("c" & iACR + 1).Value + ws.Range("c" & iACR + 2).Value
                dblACIB = IntAantalCellenInBereik
            ElseIf strACS(1) = "voormiddag" Then
                dblAAD = ws.Range("c" & iACR - 1).Value + ws.Range("c" & iACR + 1).Value
                 dblACIB = IntAantalCellenInBereik / 2
            ElseIf strACS(1) = "namiddag" Then
                dblAAD = ws.Range("c" & iACR - 1).Value + ws.Range("c" & iACR - 2).Value
                dblACIB = IntAantalCellenInBereik / 2
            End If
        Case 3
            If strACS(2) = "voormiddag" Then
                dblAAD = ws.Range("c" & iACR - 1).Value + ws.Range("c" & iACR + 1).Value
                dblACIB = IntAantalCellenInBereik / 2
            ElseIf strACS(2) = "namiddag" Then
                dblAAD = ws.Range("c" & iACR - 1).Value + ws.Range("c" & iACR - 2).Value
                dblACIB = IntAantalCellenInBereik / 2
            ElseIf strACS(1) = "vorig" Then
                dblAAD = ws.Range("c" & iACR + 1).Value + ws.Range("c" & iACR + 2).Value
                dblACIB = IntAantalCellenInBereik
            End If
        Case 4
            If strACS(3) = "voormiddag" Then
                dblAAD = ws.Range("c" & iACR - 1).Value + ws.Range("c" & iACR + 1).Value
                dblACIB = IntAantalCellenInBereik / 2
            ElseIf strACS(3) = "namiddag" Then
                dblAAD = ws.Range("c" & iACR - 1).Value + ws.Range("c" & iACR - 2).Value
                dblACIB = IntAantalCellenInBereik / 2
            End If
    End Select
End Sub

Omdat je behoorlijk (in mijn ogen: veel te lange) variabelenamen gebruikt, heb ik ze wat ingekort voor de leesbaarheid.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan