Каково максимальное значение смещений строк и столбцов в VBA для Excel 2010?

Я знаю, что на подобный вопрос был дан ответ:

Каково максимальное значение для смещения строк и столбцов в VBA / Excel?

Однако эта ошибка, по-видимому, связана с количеством строк на листе в Excel 2003. Поскольку я запускаю Excel 2010 (с 65 536 строк), я не думаю, что моя ошибка связана с моим размером листа.

Вот строка кода, которая дает мне ошибку времени выполнения «6» Переполнение:

Range("OutputStart").Offset(1 + (iCounter1 - 1) * iDataPoints * 26 + iCounter2 * iDataPoints, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 

iCounter1 является целым числом, и его значение равно 13 iDataPoints – целое число, а его значение равно 103 icounter2 – целое число, а его значение равно 7

Результат вычисления смещения строки составляет 32 858, что указывает на проблему типа данных Integer. Является ли смещение строки ограниченными типами данных Integer? Если да, есть ли способ изменить это ограничение на Long (или другой тип данных)?

Спасибо за любую помощь, которую вы можете предоставить!

Будет

Не используйте Integer: они имеют 16-значные знаковые значения ; их диапазон от -32768 до 32767. Вот почему вы получаете переполнение.

Используйте вместо этого Long.

Метод Range.Offset не ограничивается целым числом.

Смещение имеет два параметра, которые имеют тип Variant

  • Дополнительный вариант RowOffset
  • Дополнительный вариант ColumnOffset

Числовые данные в Варианте:

Как правило, числовые данные Variant сохраняются в исходном типе данных внутри Variant. Например, если вы назначаете Integer для Variant, последующие операции обрабатывают Variant как Integer. Однако, если арифметическая операция выполняется в варианте, содержащем байт, целочисленном, длинном или одиночном, а результат превышает нормальный диапазон для исходного типа данных, результат продвигается в пределах Варианта к следующим более крупным данным тип. Байт продвигается до целого числа, целое число увеличивается до Long, а Long и Single – до Double. Ошибка возникает, когда переменные Variant, содержащие значения Currency, Decimal и Double, превышают соответствующие диапазоны.

Целые числа в VB – 16 бит. Используйте unsigned int; или более идеально, длинный.

Диапазон принимает необязательные варианты в качестве аргументов, а числовые данные сохраняются, если это то, что подается в него.

Чтобы наложить число как длинное, просто оберните его в CLng(yournumber) , или если ваш номер станет огромным, бросьте его как double с CDbl(yournum) .

Interesting Posts

Ошибка имени пользователя / пароля Oracle / Excel ODBC

После выбора другой рабочей таблицы VBA переменная пошла не так

excel concate третий столбец на основе первых двух столбцов

VBA для программного программирования кода на уровне листа

Заполните массив значениями диапазона, но если ячейка не заполнена

Список проверок ячейки excel

R при оценке аргумента. Аргументы подразумевают различное количество строк

Как добавить дополнительные строки из нескольких столбцов в R?

Почему мой файл .xslm поврежден во время загрузки?

Крайние случаи в IsNumeric – это чрезмерное мышление

Получение нескольких таблиц в одном веб-запросе Excel

Управление несколькими окнами одной и той же книги с помощью VBA в Excel

Установите диапазон в Excel на основе значений соответствующих ячеек

Не удалось прочитать файл excel с использованием сценария SIS Script

Excel: Как я могу ускорить процесс поиска и замены? Изменение 32 000 ссылок на книгу

Давайте будем гением компьютера.