Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнение адресов ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сравнение адресов ячеек
jun Дата: Суббота, 06.03.2021, 12:48 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 43 ±
Замечаний: 0% ±

Добрый день!

Возник вопрос: при сравнении в цикле ячейки, адрес которой больше 100 с адресом другой ячейки (адрес меньше 100), vba считает ячейку с адресом больше 100 меньше ячейки, адрес котрой меньше 100.

Пробовал указывать адрес в формате R1C1 - не получается корректно сравнить.

Идея в том, если неравенство выполняется, то выйти из цикла.

Заранее всем большое спасибо!
К сообщению приложен файл: 14.xlsb (15.6 Kb)
 
Ответить
СообщениеДобрый день!

Возник вопрос: при сравнении в цикле ячейки, адрес которой больше 100 с адресом другой ячейки (адрес меньше 100), vba считает ячейку с адресом больше 100 меньше ячейки, адрес котрой меньше 100.

Пробовал указывать адрес в формате R1C1 - не получается корректно сравнить.

Идея в том, если неравенство выполняется, то выйти из цикла.

Заранее всем большое спасибо!

Автор - jun
Дата добавления - 06.03.2021 в 12:48
Gustav Дата: Суббота, 06.03.2021, 14:11 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Получайте от адресов ячеек номера строк и колонок по отдельности через Range(адрес).Row и Range(адрес).Column и уже их сравнивайте между собой как нормальные числа.

P.S. Посмотрел файл. Конкретно в вашей ситуации можно имеющуюся строку кода:
[vba]
Код
If rngTarget.Address > strAddress Then Exit For
[/vba]
с учетом того, что Range(rngTarget.Address) и так уже определен как диапазон rngTarget - заменить на:
[vba]
Код
If rngTarget.Column >= Range(strAddress).Column And rngTarget.Row > Range(strAddress).Row Then Exit For
[/vba]
А если еще поизучать ваш код, то можно понять, что входящий параметр strAddress - это адрес диапазона myRange, который тоже является входящим параметром. Тогда при сравнении можно сразу использовать имеющиеся переменные диапазонов:
[vba]
Код
If rngTarget.Column >= myRange.Column And rngTarget.Row > myRange.Row Then Exit For
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Суббота, 06.03.2021, 17:56
 
Ответить
СообщениеПолучайте от адресов ячеек номера строк и колонок по отдельности через Range(адрес).Row и Range(адрес).Column и уже их сравнивайте между собой как нормальные числа.

P.S. Посмотрел файл. Конкретно в вашей ситуации можно имеющуюся строку кода:
[vba]
Код
If rngTarget.Address > strAddress Then Exit For
[/vba]
с учетом того, что Range(rngTarget.Address) и так уже определен как диапазон rngTarget - заменить на:
[vba]
Код
If rngTarget.Column >= Range(strAddress).Column And rngTarget.Row > Range(strAddress).Row Then Exit For
[/vba]
А если еще поизучать ваш код, то можно понять, что входящий параметр strAddress - это адрес диапазона myRange, который тоже является входящим параметром. Тогда при сравнении можно сразу использовать имеющиеся переменные диапазонов:
[vba]
Код
If rngTarget.Column >= myRange.Column And rngTarget.Row > myRange.Row Then Exit For
[/vba]

Автор - Gustav
Дата добавления - 06.03.2021 в 14:11
jun Дата: Суббота, 06.03.2021, 18:18 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 43 ±
Замечаний: 0% ±

Спасибо большое! Разобрался
 
Ответить
СообщениеСпасибо большое! Разобрался

Автор - jun
Дата добавления - 06.03.2021 в 18:18
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!