Du solltest einfach immer genau so viele Spalten definieren, wie Du auch verwendest, bzw. genau so viele Spalten verwenden, wie Du auch definierst. Das ist bei Dir nicht der Fall. Und daraus resultiert dann die Fehlermeldung. Nehmen wir Deine Spaltendefinition einmal unter die Lupe:
* `!{\color[gray]{0.9}\vline}|` – Durch `!{…}` wird eine Spaltentrennung definiert, die statt des von `|` gesetzten vertikalen Strichs verwendet werden soll. Hier wird die Farbe auf 90% Grau eingestellt und dann ein vertikaler Strich gezeichnet. Es wird also ein vertikaler grauer Strich gezeichnet. Danach wird durch das `|` noch eine normale Spaltentrennlinie erzeugt. Eine Spalte haben wir noch nicht. Beide Linien stehen also vor der ersten Spalte
* `!{\color{cyan}\vline}c` – Es wird über `!{…}` für ein Spaltentrennung eine vertikale Linie der Farbe `cyan` verwendet. Damit haben wir eine dritte vertikale Linie vor der ersten Spalte. Dann wird über `c` eine horizontal zentrierte Spalte eingefügt.
* `!{\color{red}\vline}` – Es wird über `!{…}` für eine Spaltentrennung eine vertikale Lnie der Farbe `red` verwendet. Eine Spalte wird nicht definiert und wir sind am Ende der Spaltendefinition, die Linie schließt die Tabelle also ab.
Damit haben wir also eine Tabelle mit einer zentrierten Spalte vor der eine vertikale graue Linie, eine vertikale Linie ohne genaue Farbangabe (übernimmt die Standardlinienfarbe, die in der Voreinstellung Schwarz ist) und eine vertikale cyan-farbene Linie sind und nach der eine vertikale, rote Linie folgt. Dazu kommt allerdings noch, dass Du die Linienfarben mit `\arrayrulecolor` mehrfach änderst, was nicht nur die horizontalen Linien ändert, sondern auch die der Linien, die mit `|` gesetzt wurden. Da nur eine Spalte definiert würde, darf man natürlich auch nur eine verwenden. Eine solche Tabelle könnte im Endergebnis also so aussehen (Anmerkung: Ich habe für die erste Linie hier zu Demonstrationszwecken Blau verwendet, da 90% Grau von Schwarz zu schwer zu unterscheiden war):
![falsche Tabelle][1]
In einem Kommentar schreibst Du, dass Du erwartest, dass die Tabelle drei Spalten hat, wovon die erste grau, die zweite cyan und die dritte rot sein soll. Das geht aber ganz anders. Am besten verwendet man dazu gleich das Paket `xcolor` mit Option `table`. Die vertikalen Linien sind eher störend, weshalb ich sie weglasse:
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{>{\columncolor{gray!90}}l% linksbündige Spalte mit grauem Hintergrund
>{\columncolor{cyan}}c% zentrierte Spalte mit cyan-farbendem Hintergrund
>{\columncolor{red}}r% rechtbündige Spalte mit rotem Hintergrund
}
\toprule
eins & zwei & drei \\
vier & f\"unf & sechs \\
sieben & acht & neun \\
zehn & elf & zw\"olf \\
\bottomrule
\end{tabular}
\end{document}
Das Ergebnis wäre dann:
![farbige Tabelle mit drei Spalten][2]
Näheres zu den verwendeten Paketen `xcolor` (indirekt auch `colortbl`) und `booktabs` ist den [Anleitungen der Pakete](http://texwelt.de/wissen/fragen/6725/wo-bzw-wie-finde-ich-die-anleitung-zu-einem-paket-oder-einer-klasse) zu entnehmen. Darüber hinaus empfehle ich Dokumente wie [`tabsatz.pdf`][3] (http://www.ctan.org/pkg/tabsatz) [`tabsatz.pdf`](http://mirrors.ctan.org/info/german/tabsatz/tabsatz.pdf) und die Anleitung zu `booktabs`, [`booktabs`](http://www.ctan.org/pkg/booktabs), wenn es um die Typografie von Tabellen geht. Herbert Voß bietet in der [Edition Dante](http://www.dante.de/index/Literatur.html) auch ein komplettes Buch über den Satz von Tabellen an. Darin werden diverse Feinheiten behandelt.
[1]: http://texwelt.de/wissen/upfiles/murkstabelle_1.png
[2]: http://texwelt.de/wissen/upfiles/farbigetabelle_1.png
[3]: http://www.ctan.org/tex-archive/info/german/tabsatz