I also get this problem on the desktop.
SQLite doesn't force the column data type when you insert values, therefore this line:
sqlCmd = "Insert into Sample (len) VALUES('')"
Inserts an empty string, not 0.
Later when you do ExecuteTable, the table column is numeric because you declared the column as Number and the empty string cannot be converted.
You can see the values with your reader:
dbRdr.Value = dbCmd.ExecuteReader
Do While dbRdr.ReadNextRow
Msgbox(dbRdr.GetValue(0))
Loop
Note that there is no need to use BeginTransaction / EndTransaction unless you intend to do many inserts one after the other.