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

Fout 13 type komt niet overeen

NancyZoetstra

Gebruiker
Lid geworden
25 feb 2019
Berichten
6
Hallo Helpers,

Wij hebben een excel bestand dat de melding uit de titel geeft. Het vreemde is dat het op de ene Laptop wel gewoon werkt en op de andere niet. Ik heb al verschillende dingen geprobeerd. Regio instelling, vertrouwenscentrum etc maar allemaal zonder succes.

Het lijkt me dat het een algemene instelling ergens moet zijn gezien het op het ene systeem wel werkt. Iemand een idee van wat dit kan zijn?

Alvast bedankt
 
Laat je code eens zien.
 
Code:
'Sub die de onaction van een checkbox afhandelt
Sub checkboxHdlr(checkboxId As String)
    'Controleer of checkbox gechecked is.
    Dim cb As Object
    Dim ws As Worksheet
    Dim dataWs As Worksheet
    Dim dataWsName As String
    Dim cbNumber As Integer
    Dim WrdArray() As String
    Dim prijsKolom As Integer
    Dim naamKolom As Integer
    
    Dim optelSheet As Worksheet
    Dim optelSheetFirstClearRow As Integer
    
    'Zet de active worksheet in een variabele
    Set ws = ThisWorkbook.ActiveSheet
    
    'Zet de checkbox in een variabele
    Set cb = ws.Shapes(checkboxId).OLEFormat.Object
    
    'Zet de optel sheet in een variabele
    Set optelSheet = Sheets("OptelSheet")
    
    'Zet de formule sheet in een variabele
    Dim formuleSheet As Worksheet
    Set formuleSheet = Sheets("Formules")
    
    'Controleer of de cb aangevinkt wordt
    If cb.value = 1 Then 'Aangevinkt = ja
    
        'Haal het nummer van de checkbox uit de naam
        WrdArray() = Split(checkboxId, "_")
        cbNumber = WrdArray(1)
    
        'Zet de data sheet in een variabele

        dataWsName = ws.Name & " data"

        Set dataWs = Sheets(dataWsName)
    
        
        'Zoek naar de kolom waar de prijs in staat
        prijsKolom = Application.WorksheetFunction.Match("Prijs", dataWs.Range("1:1"), 0)
        
        'Zoek naar de kolom waar de optie naam in staat
        If InStr(dataWsName, "Model") Then
            'Doe dit voor de huis modellen
            naamKolom = Application.WorksheetFunction.Match("Woning ", dataWs.Range("1:1"), 0)
        Else
            If InStr(dataWsName, "Installaties+duurzaamheid") Then
                'doe dit voor de installaties en duurzaamheid
                naamKolom = Application.WorksheetFunction.Match("Catagorie/optie", dataWs.Range("1:1"), 0)
            Else
                'Doe dit voor de overige opties
                naamKolom = Application.WorksheetFunction.Match("Sub 1", dataWs.Range("1:1"), 0)
            End If
        End If
        
        
        'Zet de eerste lege row van de optelsheet in een  variabele
        optelSheetFirstClearRow = findLastRow(optelSheet, "A") + 1
        
        'Zoek de juiste row waar in alle data staat
        Dim i As Integer
        For i = 1 To findLastRow(dataWs, ConvertToLetter(prijsKolom))
            'Controleer of de juiste optie gevonden is werkt nog niet
            If dataWs.Cells(i, 1).value = cbNumber Then
                'Zet de id van de optie in de optel sheet
                optelSheet.Cells(optelSheetFirstClearRow, "A").value = checkboxId
                
                'Zet de prijs van de optie in de optel sheet
                optelSheet.Cells(optelSheetFirstClearRow, "B").value = dataWs.Cells(i, prijsKolom)
                
                'Zet de naam van de optie in de optel sheet
                optelSheet.Cells(optelSheetFirstClearRow, "C").value = dataWs.Cells(i, naamKolom)
                
                If InStr(dataWsName, "PVE") Then
                    optelSheet.Cells(optelSheetFirstClearRow, "D").value = dataWs.Cells(i, Application.WorksheetFunction.Match("Catagorie/optie", dataWs.Range("1:1"), 0))
                End If
                
                'Doe dit alleen voor de model sheet
                If (ws.Name = "Model") Then
                    'Zet de prijs van het model in het formule blad voor het berekenen van de vergroot of verklein prijs
                    formuleSheet.Cells(2, 9) = dataWs.Cells(i, prijsKolom)
                    
                    'Zet de m3 van het model in het formule blad voor het berekenen van de vergroot of verklein prijs
                    formuleSheet.Cells(4, 9) = dataWs.Cells(i, 4)
                    
                    'Zet de ruimtes van het model in het formule blad
                    formuleSheet.Cells(7, 13) = ((dataWs.Cells(i, 5) - dataWs.Cells(i, 6)) - dataWs.Cells(i, 7))
                    
                    'Zet de badkamers van het model in het formule blad
                    formuleSheet.Cells(8, 13) = dataWs.Cells(i, 6)
                    
                    'Zet de toiletten van het model in het formule blad
                    formuleSheet.Cells(9, 13) = dataWs.Cells(i, 7)
                    
                    'Zet het aantal m3 van het model in de verkoop sheet
                    ws.Cells(14, 7) = dataWs.Cells(i, 4)
                End If
                'Break de loop
                Exit For
            End If
        Next i
    Else 'Aangevinkt = nee
            
        'Kijk of de optie al in de optel sheet staat.
        For i = 1 To findLastRow(optelSheet, "A")
            If optelSheet.Cells(i, 1) = checkboxId Then
                'Wanneer de optie wordt gevonden, verwijder deze
                
                'Delete de hele row
                optelSheet.Rows(i).EntireRow.Delete
        
                'Break de loop
                Exit For
            End If
        Next i
    End If
End Sub




Hij geeft aan dat hier een fout 13 zit
WrdArray() = Split(checkboxId, "_")
cbNumber = WrdArray(1)
 
Is dat niet een beetje veel code voor zo iets simpel?
 
En wat staat er in checkboxId?
 
Waarschijnlijk is "cbNumber' verkeerd gedeclareerd.
Misschien heeft een of andere shape geen nummer na de underscore maar tekst.
Maak van 'Dim cbNumber as integer' eens 'Dim cbNumber
 
Plaats anders je document eens.
 
Ik kan het document helaas niet delen. sorry! Maar we gaan nu wel voorbij aan het feit dat het op 90% van de pc's hier wel gewoon werkt en op 2 laptops niet. Het kan dan eigenlijk niet aan de code liggen toch? Ik had verwacht dat het een windows instelling zou zijn met iets van een scheidingsteken maar dat heb nagekeken.
 
Ja, dan zou ik zoeken hoe dat kan. Jij schrijft zelf: "Het kan dan eigenlijk niet aan de code liggen toch?
Verschil in Windows-, Excel-Officeversie? 32-64-bits versie? Verschil in toetsenbord, taalinstellingen. Add-ins een oorzaak? Ik heb er weinig verstand van, meedenken kan altijd.

Systeembestanden gecontroleerd? sfc /scannow gedaan. DLL's lees ik, kunnen een rol spelen?
 
Je kan je document ontdoen van privacy gevoelige informatie en deze dan hier plaatsen.
 
Ja, dan zou ik zoeken hoe dat kan. Jij schrijft zelf: "Het kan dan eigenlijk niet aan de code liggen toch?
Verschil in Windows-, Excel-Officeversie? 32-64-bits versie? Verschil in toetsenbord, taalinstellingen. Add-ins een oorzaak? Ik heb er weinig verstand van, meedenken kan altijd.

Systeembestanden gecontroleerd? sfc /scannow gedaan. DLL's lees ik, kunnen een rol spelen?
Ik heb al meerdere dingen gecheckt die ik tegen kwam inderdaad.
- Office versie gecontroleerd
- beide zijn 64 bits systemen
- Taalinstelling identiek
- Add-ins uitgeschakeld
- Macro instelling gematched
- VBA instellingen gematched

sfc /scannow en DLL's had ik nog niet gevonden, wat bedoel je daarmee?
 
Systeembestanden repareren

Beschadigde en ontbrekende Windows systeembestanden kunnen problemen veroorzaken.

Typ cmd in zoekvak > rechts > Als administrator uitvoeren > Typ sfc /scannow achter de prompt en druk op Enter. Wacht geduldig tot dit proces is voltooid.

Alternatieve werkwijze:
Stap 1: Druk op Windows + R om het venster Uitvoeren (Run) te openen.
Stap 2: typ cmd in en druk op Ctrl + Shift + Enter om de opdrachtprompt als administrator te openen.
Stap 3: Typ sfc /scannow en druk op Enter om de opdracht uit te voeren.

Weet niet of dat nog invloed kan hebben. Ingestelde datumsysteem in Excel zelf > 1904-datumsysteem en Scheidingstekens onder Geavanceerd beide bij mij niet aangevinkt. ???
 
Laatst bewerkt:
De macro
Sub checkboxHdlr(checkboxId As String)

wordt door een andere macro opgeroepen.
Die oproepmacro ontbreekt.

Zet in Sub checkboxHdlr(checkboxId As String)
als eerste regel:

Msgbox checkboxId

Dan zul je zien dat daar al de fout optreedt. Die ontstaat dus in de oproepmacro.
Je kunt het bestand gewoon plaatsen als je alle cijfers door willekeurige cijfers vervangt.
 
Terug
Bovenaan Onderaan