Types komen niet met elkaar overeen.

Status
Niet open voor verdere reacties.

TruckerErik

Nieuwe gebruiker
Lid geworden
14 okt 2019
Berichten
3
Ik zit met het volgende probleem.
Ik probeer een bestand te maken voor inkoop en verkoop van vrachten.
In dit bestand wil ik graag een database aanmaken van alle adressen (klant, laad, los, tarieven) en de opdrachten. (ja, access is beter maar snap ik net zoveel als Chinese tekens lezen)
Via een blad worden de gegevens ingevoerd, dmv textbox en comboboxen, daarna weggeschreven in de database sheet.
Voor het aanmaken van relaties werkt dit wel al. Enkel als ik de vba code gebruik voor een opdracht in te voeren gaat het mis.
Ik maak in dat blad gebruik van reeds bekende gegevens uit de relatiebladen dmv combobox.
Als ik echter deze waarde wil wegschrijven in de orderdatabase krijg ik de melding: Types komen niet met elkaar overeen.
Hij geeft de foutmelding gelijk al bij RANGE A, nu als verwijzing naar C4 maar ook als ik cmbInkoopKlantNaam.Text gebruik.
Ik heb de namen van de combobox, blad, veld enz... al verschillende malen gecontroleerd maar deze zijn correct.
Ook het blad alsmede de kolom (heet Klant) waar heen geschreven moet worden is correct.
Waar ga ik de fout in want ik staar me er scheel op en heb het blad zelfs al n keer volledig verwijderd en opnieuw gemaakt zonder resultaat.
PS. Bestand uploaden lijkt me niet heel erg handig, is inmiddels 19Mb groot.

Code:
Private Sub cmdOpslaanInkoopDB_Click()

Application.ScreenUpdating = False
    
    Dim iRow As Long
    
    iRow = Sheets("InkoopDB").Range("AD1048576").End(xlUp).Row + 1
    
    If ValidateForm = True Then
    
    With ThisWorkbook.Sheets("InkoopDB")
    
        .Range("A" + iRow).Value = Sheets("InkoopNew").Range("C4")
        .Range("B" + iRow).Value = Sheets("InkoopNew").Range("D4")
        .Range("C" + iRow).Value = txtInkoopKlantRef.Value
        .Range("D" + iRow).Value = cmbInkoopLaadNaam.Text
        .Range("E" + iRow).Value = Sheets("InkoopNew").Range("W4")
        .Range("F" + iRow).Value = Sheets("InkoopNew").Range("W5")
        .Range("G" + iRow).Value = Sheets("InkoopNew").Range("W6")
        .Range("H" + iRow).Value = Sheets("InkoopNew").Range("W7")
        .Range("I" + iRow).Value = txtInkoopLaadDatum.Value
        .Range("J" + iRow).Value = Sheets("InkoopNew").Range("W8")
        .Range("K" + iRow).Value = Sheets("InkoopNew").Range("W9")
        .Range("L" + iRow).Value = txtInkoopLaadRef.Value
        .Range("M" + iRow).Value = txtInkoopGoederen.Value
        .Range("N" + iRow).Value = txtInkoopColli.Value
        .Range("O" + iRow).Value = txtInkoopLaadMeters.Value
        .Range("P" + iRow).Value = IIf(optInkoopPalletJa.Value = True, "Ja", "Nee")
        .Range("Q" + iRow).Value = txtInkoopTemp.Value
        .Range("R" + iRow).Value = cmbInkoopLosNaam.Text
        .Range("S" + iRow).Value = Sheets("InkoopNew").Range("X4")
        .Range("T" + iRow).Value = Sheets("InkoopNew").Range("X5")
        .Range("U" + iRow).Value = Sheets("InkoopNew").Range("X6")
        .Range("V" + iRow).Value = Sheets("InkoopNew").Range("X7")
        .Range("W" + iRow).Value = txtInkoopLosDatum.Value
        .Range("X" + iRow).Value = Sheets("InkoopNew").Range("X8")
        .Range("Y" + iRow).Value = Sheets("InkoopNew").Range("X9")
        .Range("Z" + iRow).Value = txtInkoopLosRef.Value
        .Range("AA" + iRow).Value = txtInkoopPrijs.Value
        .Range("AB" + iRow).Value = txtInkoopOnzeRef.Value
        .Range("AC" + iRow).Value = Sheets("InkoopNew").Range("Q14")
        .Range("AD" + iRow).Value = iRow - 1
        
        
        End With
        Call Reset
        
    Else
    
        Application.ScreenUpdating = True
        Exit Sub
        
    End If
    
        Application.ScreenUpdating = True
End Sub
 
Je moet de Kolom en Irow aan elkaar koppelen met een &. Nu heb je een + en daarmee wil je de Irow optellen bij A. Dat werkt dus niet, want die typen komen dus niet met elkaar overeen.

Code:
.Range("A"[COLOR="#FF0000"] &[/COLOR] iRow).Value = Sheets("InkoopNew").Range("C4")
 
Je moet de Kolom en Irow aan elkaar koppelen met een &. Nu heb je een + en daarmee wil je de Irow optellen bij A. Dat werkt dus niet, want die typen komen dus niet met elkaar overeen.

Code:
.Range("A"[COLOR="#FF0000"] &[/COLOR] iRow).Value = Sheets("InkoopNew").Range("C4")

Ja, nu werkt het wel.
Thx.
En ik moet ook eerlijk toegeven dat ik dit in de andere bladen wel met & stond dus waarom hier niet, geen idee.
Het zijn soms die kleine dingetjes die het verschil maken.
 
Nog een tip voor truckererik: je bent nog nieuw hier, dus je hebt, zoals elke nieuwkomer blijkbaar bij het tekenen van de contracten doet, de forum regels nog niet gelezen. de QUOTE knop is geen antwoordknop; daarvoor heb je het grote tekstvak <Snel reageren> (waarom heb je dat niet gebruikt?) en de knop <Reageer op bericht>. quoten doe je alleen als je een fragment uit een (veel) ouder bericht moet/wilt aanhalen omdat dat voor het antwoord belangrijk is.
 
:o kan niet minder dan toegeven dat ik ze zojuist gelezen heb. Regels en voorwaarden op internet zijn beetje als gebruikershandleidingen bij apparaten.
Ze worden pas gelezen als het nodig is (leert ook mijn ervaring...)
Zal me hier iig niet meer laten betrappen op een foutieve quote ;)
 
Het kan wel wat eenvoudiger en sneller.

Code:
Sub cmdOpslaanInkoopDB_Click()
  If ValidateForm = True Then
    With Sheets("InkoopNew")
      Sheets("InkoopDB").Cells(Rows.Count, 30).End(xlUp).Resize(, 30) = Array(.Range("C4"), .Range("D4"), txtInkoopKlantRef.Value, cmbInkoopLaadNaam.Text, _
      .Range("W4"), .Range("W5"), .Range("W6"), .Range("W7"), txtInkoopLaadDatum.Value, .Range("W8"), .Range("W9"), txtInkoopLaadRef.Value, txtInkoopGoederen.Value, _
      txtInkoopColli.Value, txtInkoopLaadMeters.Value, IIf(optInkoopPalletJa.Value, "Ja", "Nee"), txtInkoopTemp.Value, cmbInkoopLosNaam.Text, .Range("X4"), _
      .Range("X5"), .Range("X6"), .Range("X7"), txtInkoopLosDatum.Value, .Range("X8"), .Range("X9"), txtInkoopLosRef.Value, txtInkoopPrijs.Value, txtInkoopOnzeRef.Value, .Range("Q14"), Application.Max(Sheets("InkoopDB").Columns(30)) + 1)
    End With
    Reset
  End If
End Sub
 
Laatst bewerkt:
Gebruik geen namen die al zijn vergeven aan instructies.

'Reset' is daar een van.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan