Scampy,

A couple of things for I2CWrite for sEEPROMs.

1. For the Address, per the manual do not use Constants. Use a variable of the size required by the EEPROM. A 24c256 requires a Word address.
2. When using arrays in I2C you need to use var(0) versus var[0]. This is what is causing all of your compile errors.
3. You are writing all of these values in a string to the sEEPROM, known as Page Write mode. Make sure that the total BYTES sent to the sEEPROM at one time
does not exceed its page write buffer. For the 24c256 it is 64 bytes.
4. Remember the sEEPROMS deal with data on a Byte basis. So for your example if I remember correctly your variables you are writing are WORD variables.
So make sure you x2 when counting the number of BYTES sent to the sEEPROM in Page Write mode.

This should get you going.
Code:
i2Addr var word

i2Addr = $00
i2cwrite SDA, SCL, $A0, i2Addr, [lightsetHR(0),lightsetMN(0),lightoffHR(0),lightoffMN(0),droptemp(0),normtemp(0), _
StartMin(0),StopHour(0),StopMin(0),alarmhigh(0),StartHour(0),alarmlow(0)]
This will be 24 bytes. Remember the 24c256 is arranged/addressed in rows of 16 bytes. So this data will start at addr $00 and end at addr $17. (0-23).
The start addr of your next record would be $18.