Im gezeigten Beispiel könnte man eigentlich ganz einfach ein normales optionales Argument verwenden:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\newcommand*{\MeinBefehl}[1][green]{\textcolor{#1}{123}}
\begin{document}
\MeinBefehl[red]
\MeinBefehl
\end{document}
Will man unbedingt `Y` als optionales Argument verwenden, könnte man sich einfach einen Farb-Alias mit [`xcolor`](https://ctan.org/pkg/xcolor) definieren:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\newcommand*{\MeinBefehl}[1][green]{\textcolor{#1}{123}}
\colorlet{Y}{red}
\begin{document}
\MeinBefehl[Y]
\MeinBefehl
\end{document}
Natürlich kann man auch mit Hilfsmakros arbeiten:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\makeatletter
\newcommand\MeinBefehl@Y{\textcolor{red}{123}}
\newcommand\MeinBefehl@{\textcolor{green}{456}}
\newcommand*{\MeinBefehl}[1][]{\@nameuse{MeinBefehl@#1}}
\makeatother
\begin{document}
\MeinBefehl[Y]
\MeinBefehl
\end{document}
Da ich für die Hilfemakros interne Namen mit `@` verwende, muss natürlich [`\makeatletter` und `\makeatother`](http://texwelt.de/wissen/fragen/1/was-machen-eigentlich-makeatletter-und-makeatother) zum Einsatz kommen. Um aus Präfix und Argument wiederum einen Befehl zusammenzusetzen, verwende ich `\@nameuse`, das für Paketautoren in [`source2e.pdf`](http://mirrors.ctan.org/macros/latex/base/source2e.pdf) dokumentiert ist.
Und wenn man unbedingt ein If-Konstrukt haben will, so bietet `scrartcl` [`scrartcl`](https://ctan.org/pkg/scrartcl) (bzw. das davon verwendete `scrbase`) [`scrbase`](https://ctan.org/pkg/scrbase)) ein solches bereits an:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\newcommand*{\MeinBefehl}[1][]{%
\ifstr{#1}{Y}{\textcolor{red}{123}}{\textcolor{green}{456}}%
}
\begin{document}
\MeinBefehl[Y]
\MeinBefehl
\end{document}
Es gibt diverse weitere Pakete, die *conditionals* anbieten, beispielsweise [`etoolbox`](https://ctan.org/pkg/etoolbox):
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{etoolbox}
\newcommand*{\MeinBefehl}[1][]{%
\ifstrequal{#1}{Y}{\textcolor{red}{123}}{\textcolor{green}{456}}%
}
\begin{document}
\MeinBefehl[Y]
\MeinBefehl
\end{document}
aber auch [`l3str`](https://ctan.org/pkg/l3kernel) (sollte via [`expl3`](https://ctan.org/pkg/expl3) geladen werden):
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{expl3}
\ExplSyntaxOn
\newcommand*{\MeinBefehl}[1][]{%
\str_if_eq:nnTF { #1 } { Y }
{ \textcolor{red}{123} }
{ \textcolor{green}{456} }
}
\ExplSyntaxOff
\begin{document}
\MeinBefehl[Y]
\MeinBefehl
\end{document}
wobei man dann natürlich gleich mal überlegen sollte, ob man die Definition nicht direkt mit [`xparse`](https://ctan.org/pkg/xparse) erledigt:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{expl3}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\MeinBefehl} { o } {%
\str_if_eq:nnTF { #1 } { Y }
{ \textcolor{red}{123} }
{ \textcolor{green}{456} }
}
\ExplSyntaxOff
\begin{document}
\MeinBefehl[Y]
\MeinBefehl
\end{document}
Durch die jeweils angegebenen Links findet man auch die relevanten Anleitungen, in denen man die verwendeten Anweisungen unbedingt nachlesen sollte.