См. Комментарий AnthonyWJones)
(С помощью VB вы можете установить базу массивов, начиная с 0 или 1 - она должна быть в верхней части модуля или рядом с ней: ищите Option Base 1 или Option База 0.)
LBound всегда будет возвращать 0. (Вы также можете использовать LBound () для проверки нижней границы массива.)
(Просто покажу: не ожидайте, что MS будет последовательной!)
Несмотря на то, что вы проверяете, что размер массива> = 1 - это гарантирует, что arylin (0) действителен, но не обязательно arylin (1). Индекс начинается с нуля, поэтому, если существует один элемент, он будет иметь индекс = 0, а индекс = 1 будет выходить за пределы.
Вы должны проверить, что размер массива> = 2 в этом случае. Если вы используете две записи, следующие друг за другом последовательно, то необходимо выполнить проверку для (размер массива) mod 2 = 0.
Также убедитесь, какое значение действительно возвращает UBound. Я погуглил и получил противоречивую информацию: этот говорит, что он возвращает 'count', тогда как этот говорит, что он возвращает физический предел (= 'count' -1).
Об элементе «При ошибке продолжить следующее», возможно, он должен остаться там ...