View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Nile_Hef[_2_] Nile_Hef[_2_] is offline
external usenet poster
 
Posts: 23
Default Excel add-in that may help the color blind

Interesting item, and one of the few instances of a relevant product plug
that I've ever seen on a newsgroup.

I would point out that 3% of the male population in predominantly caucasian
countries are colour-blind, most being red-green 'dichromats' who have
difficulty distinguishing colours in the red-yellow-green part of the
spectrum, and a small minority (less than half a percent) being
'monochromats' who live in a completely colourless world.

We are obliged by law, in any G7 country, to cater for disabled people in
all applications offered for use by the general public. Most large
corporations have specific disability and 'accessibilty' policies that
require us take account of colour-blindness (and, in theory, users unable to
operate a pointing device) and the only reason that many of us have escaped
prosecution or discipliniary hearings is that the affected users are very
skilled at circumventing bad interface design and don't realise that they can
and should complain.

For dichromats, the theoretical solution is to use the Workbook.Colors()
property to shift the entire palette, colour by colour, up or down into the
frequency range that these users can discriminate, leaving larger 'band gaps'
around mission-critical colour replacements for red and green if they are
used for common warnings or data verification cues. Be warned, the
calculations are not trivial!

The practical solution is to design your application so that colour cues
(especially red and green conditional formatting) are *never* the only cues
presented to the user.

In the case of conditional formatting, change the font and the border
whenever you change the background colour!

For monochromats, it's usually best to give them this code snippet to impose
a custom palette, and let them reformat their workbooks On Open:

Public Sub SetPalette(Optional wbk As Excel.Workbook)

On Error Resume Next

If wbk Is Nothing Then
Set wbk = ThisWorkbook
End If

Application.ScreenUpdating = False

With wbk

' Pale grey colour gradient
' Target: top row of the two hidden rows in the palette dialogue

.Colors(17) = &HF0F0F0
.Colors(18) = &HE0E0E0
.Colors(19) = &HD0D0D0
.Colors(20) = &HC0C0C0
.Colors(21) = &HB0B0B0
.Colors(22) = &HA0A0A0
.Colors(23) = &H909090
.Colors(24) = &H808080


' Grey semitones
' Target: bottom row of the two hidden rows in the palette dialogue

.Colors(25) = &HF8F8F8
.Colors(26) = &HE8E8E8
.Colors(27) = &HD8D8D8
.Colors(28) = &HC8C8C8
.Colors(29) = &HB8B8B8
.Colors(30) = &HA8A8A8
.Colors(31) = &H989898
.Colors(32) = &H888888

' Redistribute the main greyscale sequence in
' the right-hand column of the default palette:
.Colors(15) = &HC0C0C0
.Colors(48) = &H707070
.Colors(16) = &H606060
.Colors(56) = &H404040

End With

Application.ScreenUpdating = True

End Sub

It's not a complete solution but those users will soon figure out how and
where to attack the main palette, replacing &HFF0000, &H00FF00 and &H0000FF
with differing greyscales. Go back and see the results: it is a humbling
experience to discover that they have come up with better visual design
solutions than you did.