Obviously developers and users will have different perspectives here.[ ] Furthermore, developers' perspectives will be influenced by whether they are hoping to earn some income from their products or are writing the software only as an intellectual exercise:[ ] a classic, literal, case of the professional versus the amateur.[ ] I speak as an amateur developer, although I was more a user when I was in full-time employment.[ ]
I develop using Excel.[ ] Several reasons:[ ] I have access to it and am familiar with it.[ ] Pretty much all my target audience of engineers have access to it and are familiar with it (or think they are).[ ] I don't have to overly worry about the user interface.[ ] VBA extends Excel's capabilities enormously, albeit clunkily and less transparently.[ ] VBA as a programming language is similar to the language I used most of my professional life, Fortran (what's that cliché about old dogs and new tricks).[ ]
Celt83 in his 10Mar21@21:05 post lists some good considerations that warrant comment.[ ] My comments/views follow, based on my personal philosophy and motivations.[ ] Most will, as Celt83 pointed out, also apply to non-spreadsheet software.[ ]
1.[ ] Spreadsheet completely locked down?[ ] Spreadsheets should be locked down, except for cells that the user needs to be able to change.[ ] Faint colouring should be applied to changeable cells, as a guide to both the user and any checker.[ ] The locking down is done purely to prevent corruption by user error or excessive enthusiasm.[ ] All cells should be fully visible.[ ] The locking down should not be enforced by a password, so the user can unlock at any time.[ ] I like to reimpose the locking (by VBA) when the spreadsheet is reopened after being saved.[ ] The VBA code should be password protected, but with that password publicised in the spreadsheet.[ ] The VBA locking is done so that any errors thrown up by the VBA's execution (which can happen despite the author's best endeavours) do not expose the VBA code to the user.[ ]
2.[ ] Spreadsheet just a means to collect user input and everything is done in VBA?[ ] A developer should avoid using VBA except where there is no alternative.[ ] Usually better speed.[ ] Always better transparency.[ ] But there are lots of things that can only be achieved with VBA assistance.[ ]
3.[ ] Spreadsheet devoid of any documentation or references?[ ] One hopes not.[ ] Better to err on the side of excess.[ ]
4.[ ] Information hidden?[ ] See above.[ ]
5.[ ] Reliance on macros or custom functions?[ ] See above.[ ] See point 11 below for an aspect vaguely relevant to Celt83's comment on spreadsheet use "via the web interface".[ ]
6.[ ] Spreadsheet formatted for printing to standard sheet size?[ ] Ideally.[ ] But sometimes surprisingly difficult to achieve without losing "logical structure".[ ] (I used to overlook this aspect, and am now gradually trying to retrofit good pagination.[ ] To achieve it for both the metric and the imperial universes, page sizes should be limited to A4 width and AQ length.[ ])
Some further comments on spreadsheet design.[ ]
7.[ ] Checks upon the inputs your user enters.[ ] As many as possible, please.[ ] And then some.[ ]
8.[ ] Excessive use of multiple colours.[ ] Try to avoid.[ ] Firstly, the pages might need to withstand being reproduced in monochrome (photocopying or faxing).[ ] Secondly, some colours that look good on a screen or a printed page can become very hard to read on an overhead projector.[ ] Thirdly the visual dog-vomit effect can be a bit overwhelming.[ ]
9.[ ] Version control / revision history.[ ] Essential for a spreadsheet that is likely to have widespread usage, or usage by people totally remote from the author.[ ] Should be built into the spreadsheet, and the version number should form part of the printed output.[ ]
10.[ ] Run date.[ ] This should also form part of the printed output.[ ]
11.[ ] Backwards compatibility.[ ] If your target audience is broad enough you will have no idea what version of Excel they might be using.[ ] Avoid taking advantage of features that appeared only in recent versions.[ ] (I know, I know.[ ] Apply this philosophy too viciously and you end up programming for an abacus.)
12.[ ] Forwards compatibility.[ ] It never hurts to confirm that a spreadsheet you developed on an older version of Excel still runs correctly on the later versions.[ ] (Having said this, I have only once encountered an Excel feature that worked correctly on an old version and incorrectly on a newer one.[ ])
That'll do.[ ] To mangle a pair of clichés, my neck is now nailed to the mast.[ ]