{"text_format":"3","workbook":"xlsx","n_sheets":3,"sheets":["Guidelines","Walkthrough","State List"],"not_rendered":{"images":2,"macros":1,"defined_names":1},"read":"whole","date_system":"1900"}

{"sheet":"Guidelines","index":0,"n_rows":28,"n_cols":3,"rows_kept":28}
[null,null,"A walkthrough of the fields of the form can be found on sheet Walkthrough"]
[null,"Suggestions from 6StringJazzer at ExcelForum.com"]
[]
[null,"There are a few simple rules for user interface validation:"]
[]
[null,"1. Notify the user as soon as possible when input is not acceptable"]
[null,"2. Put an error notification as close to the error as possible"]
[null,"3. When you do form validation, notify the user of all errors--don't just give up after the first one you find"]
[null,"4. Prevent the user from entering incorrect data in the first place."]
[]
[null,"There are several ways to code calling a form that validates input. Here are two that I use:"]
[null,"1. Call Show to show the form, and have a Public variable in the form code to indicate the result of calling the form. I suggest using built-in constants to indicate the status (e.g., vbOK, vbCancel)"]
[null,"2. Have a Public Function in the form code that the code calls to display the form, instead of calling Show. The function can return the status. To enforce design integrity you will also have to disallow a call to Show from outside the form, which makes this option a little more complicated."]
[]
[null,"To notify the user as soon as possible, use an event that detects when a control changes value. If the syntax for the field allows it, validate partial entries as the user types. For example, if a field must be numeric, it is possible to tell immeidatly if they have typed something non-numeric."]
[null,"There are three types of validation:"]
[null,"1. The data provided for a particular value is not well-formed. For example, the field is a date of the form mm/dd/yyyy and the user types DOG."]
[null,"2. The data provided is outside range constraints. For example, it doesn't make sense for a birth date of a living person be in the future, or more than 125 years in the past."]
[null,"3. The data provided is not consistent with other data. For example, the user provides a ZIP code that is not in the state that was entered."]
[]
[null,"Constrain the user's ability to make errors:"]
[null,"1. If the user must choose one of three values, don't use a textbox for them to type possible nonsense. Use a dropdown, listbox, or option buttons (radio buttons)"]
[null,"2. If the user must provide a date, use a date picker control."]
[null,"3. If it is not valid for a user to complete a field, given the values in other fields, disable the field. Disabling is preferable to hiding, because abrupt change in the look of  the form can be disorienting to users. For example, if a survey choice is Other and they must provide a descirption, leave this field disabled until they check the Other choice."]
[]
[null,"Web developers have to be aware of all these issues, and also have to guard against injection attacks, such as hackers that type SQL into a field to try to gain access to data in the database."]
[]
[null,"For any but the simplest expressions, learn regex. Regex is a pattern matching language that can be used for complex validation on string formats."]

{"sheet":"Walkthrough","index":1,"n_rows":0,"n_cols":0,"rows_kept":0}

{"sheet":"State List","index":2,"n_rows":53,"n_cols":4,"rows_kept":53,"hidden":true}
[null,"Code","State"]
["Alabama","AL",{"$f":"A2","v":"Alabama"},{"$f":"B2&\" - \" &A2","v":"AL - Alabama"}]
["Alaska","AK",{"$f":"A3","v":"Alaska"},{"$f":"B3&\" - \" &A3","v":"AK - Alaska"}]
["Arizona","AZ","Arizona","AZ - Arizona"]
["Arkansas","AR","Arkansas","AR - Arkansas"]
["California","CA","California","CA - California"]
["Colorado","CO","Colorado","CO - Colorado"]
["Connecticut","CT","Connecticut","CT - Connecticut"]
["Delaware","DE","Delaware","DE - Delaware"]
["District of Columbia","DC","District of Columbia","DC - District of Columbia"]
["Florida","FL","Florida","FL - Florida"]
["Georgia","GA","Georgia","GA - Georgia"]
["Hawaii","HI","Hawaii","HI - Hawaii"]
["Idaho","ID","Idaho","ID - Idaho"]
["Illinois","IL","Illinois","IL - Illinois"]
["Indiana","IN","Indiana","IN - Indiana"]
["Iowa","IA","Iowa","IA - Iowa"]
["Kansas","KS","Kansas","KS - Kansas"]
["Kentucky","KY","Kentucky","KY - Kentucky"]
["Louisiana","LA","Louisiana","LA - Louisiana"]
["Maine","ME","Maine","ME - Maine"]
["Maryland","MD","Maryland","MD - Maryland"]
["Massachusetts","MA","Massachusetts","MA - Massachusetts"]
["Michigan","MI","Michigan","MI - Michigan"]
["Minnesota","MN","Minnesota","MN - Minnesota"]
["Mississippi","MS","Mississippi","MS - Mississippi"]
["Missouri","MO","Missouri","MO - Missouri"]
["Montana","MT","Montana","MT - Montana"]
["Nebraska","NE","Nebraska","NE - Nebraska"]
["Nevada","NV","Nevada","NV - Nevada"]
["New Hampshire","NH","New Hampshire","NH - New Hampshire"]
["New Jersey","NJ","New Jersey","NJ - New Jersey"]
["New Mexico","NM","New Mexico","NM - New Mexico"]
["New York","NY","New York","NY - New York"]
["North Carolina","NC","North Carolina","NC - North Carolina"]
["North Dakota","ND","North Dakota","ND - North Dakota"]
["Ohio","OH","Ohio","OH - Ohio"]
["Oklahoma","OK","Oklahoma","OK - Oklahoma"]
["Oregon","OR","Oregon","OR - Oregon"]
["Pennsylvania","PA","Pennsylvania","PA - Pennsylvania"]
["Puerto Rico","PR","Puerto Rico","PR - Puerto Rico"]
["Rhode Island","RI","Rhode Island","RI - Rhode Island"]
["South Carolina","SC","South Carolina","SC - South Carolina"]
["South Dakota","SD","South Dakota","SD - South Dakota"]
["Tennessee","TN","Tennessee","TN - Tennessee"]
["Texas","TX","Texas","TX - Texas"]
["Utah","UT","Utah","UT - Utah"]
["Vermont","VT","Vermont","VT - Vermont"]
["Virginia","VA","Virginia","VA - Virginia"]
["Washington","WA","Washington","WA - Washington"]
["West Virginia","WV","West Virginia","WV - West Virginia"]
["Wisconsin","WI","Wisconsin","WI - Wisconsin"]
["Wyoming","WY","Wyoming","WY - Wyoming"]