投稿者 るきお  (社会人) 投稿日時 2011/11/19 13:23:38
だいたい状況がわかりました。
percentageが文字列というところがポイントです。

値の後ろについている「%」にはVBとしては特別な意味はなく、「A」や「B」などと同じ文字列の一つとみなされます。つまり、ももさんのやりかたでは数値としての比較はされていなくて文字列としての比較が行われています。

つまり、どんな理屈が働いているか例を挙げながら説明すると、
・A < B → True
・A < AA → True (辞書に載るとしたら A は AA より前に載るという発想)
・A < A% → True (同上。% は A や B と同じ何の意味もない文字)
・10 < 10% → True

この発想だと、
100%=F → 「1」から始まる項目は「90」よりもかなり前に載ります。(辞書の先頭の方に載ります。)
99%=A →「99%」は「90」より後ろに載ります。
90%=A→「90%」は「90」より後ろに載ります。
89%=F→「89%」は「90」より前に載ります。「89」よりは後ろに載ります。該当がないのでElseに行きます。
という具合です。

数値比較をする場合はIntegerやDecimalなど数値型で扱うようにするのが良いです。
「%」をつけたりというのは見かけ上の要望で合って、見かけが問題になるのは画面に表示したり印刷したりするときだけです。つまり、画面表示の時や印刷の時に % をつけるべきで、それ以前の計算や比較・判定のロジックの中で % がついているのはむしろ邪魔になります。