Я разрабатываю макрос, который позволяет пользователям выбирать определенные диапазоны набора данных, которые они хотели бы проверить на наличие ошибок (в этом случае, если респонденты опроса выбрали одну и ту же опцию для нескольких вопросов). Для того, чтобы сделать его более удобным для пользователей, чтобы увидеть, что находится в пределах их проверки (и так VBA может сказать, какие диапазоны использовать), я код цвета их следующим образом:Выбор нескольких смежных диапазонов отдельно
Set flRange = Application.InputBox("Select the ranges you want to check for flatlining. (To select non-contiguous ranges, hold down CTRL when moving between ranges)", , , , , , , 8)
flRange.Select
flRange.Cells.Interior.Color = RGB(255, 222, 117)
Затем я использую этот цвет, чтобы определить, если диапазон должен анализироваться:
If Cells(1, x).Interior.Color = RGB(255, 222, 117) Then
Однако, если пользователь выбирает несколько диапазонов (которые должны быть проанализированы отдельно), которые находятся в непосредственной близости друг от друга, VBA будет читать их как часть одного и того же диапазона (так как они имеют одинаковый цвет) ,
Это лучший способ, которым я решил, чтобы пользователи могли вводить несколько несмежных диапазонов для анализа одним и тем же методом, но я не знаю, как решить эту проблему. Если у кого-то есть предложение о том, как лучше закодировать этот макрос, я бы очень признателен ему.
Редактировать: Тим и Джошуа решили это. Спасибо за помощь!
Или используйте цикл «Для каждого rng в flRange.Areas», где 'rng' будет объектом« Range », представляющим определенную часть всего диапазона. –
Я понятия не имел, что даже существует. Я часто не работаю с прерывистыми диапазонами, я обновил свой код, чтобы включить ваше предложение. – Soulfire