[EXCEL/VBA] Typen komen niet met elkaar overeen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Djurres
  • Registratie: Januari 2013
  • Laatst online: 20:07
Beste Tweakers,

Ik loop tegen een heel stom probleem aan, ik heb een stuk code geschreven die met een VBA VLookup een mailadres moet ophalen, en daar een mail naartoe moet versturen.
Code onder de knop voor single mail:
code:
1
2
3
4
5
6
7
8
9
10
Private Sub createSingleMail_Click()
    If Me.ListBoxWorker.ListIndex = -1 Then
        MsgBox "Er is geen medewerker geselecteerd!"
    Else
        Call createPDF(Me.ListBoxWorker.Value, False)
        Call ResetTable
        Call createPDF("Overzicht", False)
        Call createMail(Me.ListBoxWorker.Value)
    End If
End Sub


Als ik deze code 'enkel' uitvoer is er geen enkel probleem. De juiste bijlagen worden netjes toegevoegd, en de mail is gericht aan de juiste man.

Zodra ik éxact dezelfde code loop, dan klapt hij er bij een bepaald persoon, laten we hem even "Karel" noemen, eruit. Zodra ik dus in mijn listbox Karel selecteer en ik doe een enkele mail gaat alles prima, krijg ik netjes een mail met de juiste bijlagen, maar zodra hij het via een loop moet doen krijg ik ineens een foutmelding.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub createAllMails_Click()  
    ' maak overzichtspagina
    Call ResetTable
    Call createPDF("Overzicht", False)

    ListBoxWorker.ListIndex = 0

    Dim I As Long
    For I = ListBoxWorker.ListCount - 1 To 0 Step -1
        ListBoxWorker.ListIndex = I
        Call createPDF(Me.ListBoxWorker.Value, False)
        Call createMail(Me.ListBoxWorker.Value)
    Next I
    MsgBox "Alle planningen zijn verstuurd!"
    
End Sub


Ik heb uitgesloten dat het in de createPDF Functie zit, want als ik de createMail uit comment loopt ie wel netjes door. Andersom niet, vandaar dat ik er vanuit ga dat het in de createMail zit.

bijgaand de createMail
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
Public Sub createPDF(fileName As String, message As Boolean)
    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0)
        .RightMargin = Application.InchesToPoints(0)
        .TopMargin = Application.InchesToPoints(0)
        .BottomMargin = Application.InchesToPoints(0)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
        .Orientation = xlPortrait
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    
    'dim Weeknummer en configpath en uiteindelijke path
    Dim weekNumber As String
        weekNumber = getWeek()
    Dim basePath As String
        basePath = getBasePath()
    
    Dim newPath As String
        If fileName = "Overzicht" Then
            fileName = fileName & " - " & weekNumber
            newPath = basePath & weekNumber & "\" & fileName
        Else
            fileName = weekNumber & " - " & fileName
            newPath = basePath & weekNumber & "\" & fileName
        End If

    If checkIfPathExists(basePath, weekNumber) = True Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=newPath, ignoreprintareas:=True, IncludeDocProperties:=True
        If message = True Then
            MsgBox "Bestand is aangemaakt op locatie: " & newPath
        End If
    Else
        MsgBox "Pad bestaan beide niet. Controleer de 'Instellingen' tab en zorg voor een juist pad in cel B5", vbCritical, "Fout in PDF paden!"
    End If
End Sub


En wat handig kan zijn;

getMailAddress
code:
1
2
3
4
5
6
7
Function getMailAddress(workerName)
    Dim mailAddress As String
        mailAddress = Application.VLookup(workerName, Sheets("Monteurs").Range("A11:D150"), 3, False)
    getMailAddress = mailAddress
    Debug.Print ("getMailAddress() Called")
    Debug.Print (getMailAddress)
End Function


De foutmelding die ik verkrijg is een Fout 13 tijdens uitvoering: Typen komen niet met elkaar overeen. Het stomme is dat ik die fout bij een 'enkel' proces niet krijg, en dat het maar bij 1 specifieke naam gebeurt waar geen rare tekens in zitten.

Bij de foutopsporing licht deze regel op:
Afbeeldingslocatie: https://i.imgur.com/0QEFdE9.png

En zo zien mijn variabelen eruit
Afbeeldingslocatie: https://i.imgur.com/Kjqcus7.png

Ik ben trouwens géén programmeur, allemaal hobby en autodidact, dus hoor graag verbeteringen.

Beste antwoord (via Djurres op 25-06-2021 12:40)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Wat je schrijft klopt niet:

code:
1
2
Dim mailAddress As String
mailAddress = Application.VLookup(workerName, Sheets("blad1").Range("A1:D150"), 3, False)e


Móet een foutmelding 'typen komen niet overeen' geven als workerName niet voorkomt in kolom A. Geeft de code geen foutmelding dan zit je ergens met on error resume next te prutsen oid.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Alle reacties

Pagina: 1