Ошибка, кажется, состоит из двух частей. Сначала вы добавляете в свой список число, которое отличается от того, которое вы сравниваете.
Во-вторых, вы используете Rnd неправильно. См. http://msdn.microsoft.com/en-us/library/f7s023d2(VS.80).aspx для использования, но, в основном, от того, как задан ваш код, вы генерируете число от 0 до 100. Поскольку rnd возвращает один.
То, что происходит, это то, что вы в основном делаете 100 * 0,5, что возвращает вам 50 или 100 * 0,01, что возвращает вам 1.
Если вы хотите, чтобы нижняя граница составляла 100, вы должны сделать это следующим образом.
CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound))
Также, пожалуйста, не забудьте вызвать Randomize () перед использованием Rnd