I actually setup two Arrays, one for units and one for comments/notes.
Dim aryMyUnitStatus(31, 17) As Short
Dim aryMyUnitNotes(31, 17) As String
This keeps the arrays small and I use the ASC function for the integer value of the housecode instead of using strings, considerably faster for large setups.
So basically, 65 is A, so i start with five and then use a 60 sub/add handler, so for example, if I want to add a note for unit C6, I use
aryMyUnitNotes(Asc("C") - 60), 6) = "EE facing SE on back pool deck"
So, of course, I have a function for processing data in and out of the arrays and everytime something fires, I see the note in the window (those notes are stored in the DB and I have an INIT procedure for that on startup that grabs a recordset and writes it to the array). This way, I have unlimited If/Then potential in my logic. Of course, I do ASSUME many of the units are actually in the state that was last set ... since I don't have all of my uints as two-way, so it's not flawless, I'm slowly replacing them, but time is not growing on trees at present :-)
Seems to work well so far, not totally perfected yet. I really need to mark it against I/O on the database and see which is more stable/faster, but for now, it's doin the job ... more to come for sure!!