vba target.count = 1 ошибка при выборе всех - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть лист с кодом, который будет запускать некоторый код VBA в зависимости от того, какие ячейки выбраны.(ячейка имеет функцию кнопки).Так как пользователь может выбирать диапазоны, включающие несколько ячеек, способ ограничения этой проблемы (не вызывая код vba, когда ячейка включена в выбранный диапазон, но ЭТО НЕ ТОЛЬКО ЯЧЕЙКА), использует target.count.пользователь выбирает несколько ячеек, включая одну, которая запускает VBA, но мне интересно, почему он выдает ошибку, когда пользователь выбирает все с помощью CTRL-A

, это код за листом

Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
     run some code

Если я выберу весь лист с помощью contrl-A, произойдет ошибка.

ошибка времени выполнения 6 Переполнение

Более странно даже.лист содержит таблицу (listobject). Если я нажимаю ctrl-A внутри таблицы, то выбирается вся таблица, и ошибки не возникает.Если я нажму ctrl-A за пределами таблицы, будет выделен весь лист и произойдет ошибка.

Какое объяснение этому поведению?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Замените Target.Count на Target.CountLarge свойство.

Ссылка: http://msdn.microsoft.com/en-us/library/office/ff196838(v=office.15).aspx

0 голосов
/ 12 декабря 2018

tldr; Вы пытаетесь получить слишком большое число в свойстве Range.Count.

Свойство Range.Count было записано так, чтобы возвращать длинное целое число, разрешенное в общее значение.количество отдельных ячеек в объекте диапазона.

Свойство Range.Count (Excel) Возвращает значение Long, представляющее число объектов в коллекции.

Вы получаете Runtime error 6: Overflow, поскольку общее количество отдельных ячеек на листе XLSX составляет 1 048 576 строк× 16 384 (от A до XFD) столбцов.Это разрешает 17 179 869 184 отдельных ячеек, что превышает максимально допустимое значение длинного целого числа со знаком.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...