First of all, use parameters, see
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675869(v=vs.85).aspx[
^] . Your current way of concatenating values directly to the SQL statement leaves you open to Sql injections, data type conversion problems and so on.
About the actual problem. You have to set the "missing" value to null. You can do this either in the Sql statement or in the code. Either you use if statement to decide whether to set the parameter as null or you can modify the statement to do this.
For the statement, something like (if I remember the syntax for ADO parameters correctly):
...
SQL = SQL + "DIVID=DECODE(?, -1, NULL, ?)," \\Foreign key
...
And then set the corresponding parameters in your code to contain
Val(CmbDIV.ItemData(CmbDIV.ListIndex))