So, if sometimes array exists and sometimes not, maybe try this method for array size test:
DIM c(5) AS LONG 'long = 4 bytes, records from 0 to 5 (6 records), so LEN = 24
PRINT LEN(c())
Or - if your code is used in SUB but array Seat is not SHARED, this can also do this error.
Edit:
If you use LEN on a field that does not exist, it will not return a value of 0, as you might expect, but a field value of 11 records. For example, if you write PRINT LEN (NotExists ()), you get a result of 44. The reason is that all variables in QB64 automatically get the assigned size of 10 (including 0) therefore 11 records. Well, if the "NotExists" field does not exist, QB64 counts with the default SINGLE type, which is 4 bytes per record * 11 = 44.
So instead of a complicated field existence test, would always leave it defined, allow a record of 0, and insert a value of 1 if I wanted to process the field, or a value of 0 if I didn't want to process the field. Or you can use an auxiliary variable, but again, that's pretty confusing when more are needed and it's an easy way how to go crazy... look to me... :)