You can start by not using string concatenation to build the SQL query. Instead, use a parameterized query.
You can also make sure you're spelling your table and column names correctly and making sure you have spaces where appropriate, like just before Value and just after the table name.
It's been a long time since I've done anything in Access, but you may also be required to have parentheses around the list of column names you're inserting data into.
You might want to pass the data from the fields in the correct order to match the columns you specified in the query column list. Just sayin'.
That way you've written this code is error prone, does not accept ' characters in text fields, and is susceptible to SQL injection attacks.
Parameterized queries will solve all of that. With Access queries, the names of the parameters do not matter. What is important though is you mass the parameters in the exact order you specified in the column list. Below is an example of a parameterized query, but I still consider this to be crappy code because it does not validation of data before adding it to the database.
cmd = New OleDbCommand("INSERT INTO tblVehicle ([LicenceNo], [Model], [Colour], [Engine], [Class], [DailyRate], [WeeklyRate], [Quantity]) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
cmd.Parameters.AddWithValue("licenseNo", txtLicenseNo.Text)
cmd.Parameters.AddWithValue("model", txtModel.Text)
cmd.Parameters.AddWithValue("colour", cmdColour.SelectedItem)
cmd.Parameters.AddWithValue("engine", txtEngine.Text)
cmd.Parameters.AddWithValue("class", txtClass.Text)
cmd.Parameters.AddWithValue("dailyRate", txtDailyRate.Text)
cmd.Parameters.AddWithValue("weeklyRate", txtWeeklyRate.Text)
cmd.Parameters.AddWithValue("quantity", txtQty.Text)