Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Как задать в макросе - конкретную ячейку - в качестве адреса.
 
Здравствуйте ребята.

Подскажите как в макросе - назначить конкретную целевую ячейку.
Есть очень мудреный макрос, в котором ищется выход из лабиринта.
Из ячейки G9 - закрашивается путь к этому выходу.

Но мне нужно как-то задать этому макросу - в качестве цели - не какой-то выход, а конкретную ячейку - например ячейку AW12.
Подскажите - как это сделать ?
 
Как вариант загнать весь диапазон в массив, и начать сравнивать, в зависимости от положения начальной точки и каких-то условий двигаться, т.е. по сути производить сравнение элементов массива с конечной точкой, соответственно массив должен быть, как минимум двумерным (координаты х,у).


Обращение к ячейке Range("AW12")
Изменено: PDO - 20 Апр 2019 17:42:52
 
Точнее
Код
Range("AW12")
Согласие есть продукт при полном непротивлении сторон.
 
Пишите макросы с WinAPI, а как к ячейке обратиться не знаете!?
Согласие есть продукт при полном непротивлении сторон.
 
PDO, понятно.
А как это сделать ?
 
в моделе листа найти  ---- MChWave [G9]   .... дальше думаю понятно
Изменено: Ivan.kh - 20 Апр 2019 18:41:44
 
Ivan.kh,[G9] - это точка начала пути.

Я же спрашивал - как задать конечную ячейку (то есть [AW12]) ?
 
Ну так и сделайте выход в той ячейке ...
 
Ivan.kh, нет, мне этот адрес - нужно именно задать.
Чтобы алгоритм просто двигал бы ячейку к конкретному адресу, а не искал выход откуда-то.
 
Где Вы его задавать собираетесь?
Изменено: Ivan.kh - 20 Апр 2019 19:07:53
 
Там так написано, что он ищет именно выход.
Если нужно что-то другое - переписывайте алгоритм
 
Цитата
Ivan.kh написал: Где Вы его задавать собираетесь?
Ivan.kh
, я не знаю.
Это мой вопрос в первом сообщении - где его задавать ?
Изменено: Lizard2 - 20 Апр 2019 19:37:12
 
Lizard2, Я Вам дал ответ, он в коде явно не задается ... он вычисляется/определяется ...  в том то и суть лабиринта ... его можно изменить поменяв выход, что я Вам и показал на скрине
 
Ivan.kh, ну понятно.

А как без лабиринта обойтись, чтобы ячейка просто шла к конкретной цели.
Мне не нужен лабиринт, я поэтому и спрашиваю.
Как подобный макрос должен выглядеть ?
 
ну и как это можно было понять с изначального вопроса?
Создавайте новую тему, описывайте, по какому маршруту, как должно ходить .., как сами пытались сделать, а не просто нашел в интернете мудренный файл почти то что мне нужно но совсем не то
 
Цитата
Ivan.kh написал:
описывайте, по какому маршруту
Ivan.kh, имеется ввиду маршрут от ячейки G9 к целевой ячейке AW12, с огибанием препятствий.

Вот вы бы какой алгоритм предложили ?
У вас есть какая-нибудь теория на этот счет ?
 
Есть теория. если применять к примеру лабиринта, то в процедуре MChWave:
Изменить mx на колонку W
И если в цикле дошли до колонки W, то все ячейки кроме 12 приравниваем к препятствию ...
 
Цитата
Ivan.kh написал:
Изменить mx на колонку W
Вы имеете ввиду mx = UBound(a, 2)

А что за колонку в нее вписывать (в смысле столбец W) ?
Почему именно этот столбец, чем он отличается от других  ?
 
Lizard2, ошибся не W, а AW
 
Цитата
Ivan.kh написал:
Изменить mx на колонку AW
А как эту переменную изменить ?

Я вот заменил ее с
   mx = UBound(a, 2)
На
   mx = Range("AW:AW")

Что-то не работает.
 
Lizard2,
как вариант вставить до начала выполнения всего
Код
Range("aw6:aw32")=1
Range("aw12")=""
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Александр, это будет тоже, что я предлагал в 8 посте
Lizard2, Вы понимаете, для чего в коде используется переменная mx? в нее помещена граница лабиринта (правая) - число. Вы в нее запихиваете диапазон ячеек ...

Для чего нужно Вам необходима прорисовка маршрута в ячейку AW12?
Изменено: Ivan.kh - 21 Апр 2019 08:40:41
 
Ivan.kh, а как тогда записать ?

Пробовал вот так
Код
mx = UBound([AW].Column, 2)
и вот так
mx = UBound([AW].Column)
mx = UBound([AW12].Column)
mx = UBound([AW12].Column, 2)

Все равно не работает.
 
Как же быть ?
Подскажите.
 
Вы так и не ответили для чего это нужно?
Сделал проще (в лоб, на основании советов по изменению границ лабиринта, т.к. лень ковыряться в циклах)
 
Цитата
Ivan.kh написал:
Вы так и не ответили для чего это нужно?
Чтобы прочертить аналогичный путь - не привязываясь к границам лабиринта.

Цитата
Ivan.kh написал:
по изменению границ лабиринта
Мой вопрос заключался в том - что нет границ лабиринта и лабиринта самого нет. Их вообще нет, ни с измененным цветом или обозначенными другим образом.
Есть только начальная ячейка, конечная ячейка и препятствия между ними.
 
Lizard2, Ну так показывайте пример структуры реального задания, что там за препятствия и т.д.
З.Ы. Я понимаю что нужно прочертить аналогичный путь, мне не понятны прикладная польза - зачем этот путь строить...
 
Прошу прощения возможно тупой ответ, а это не подходит? Application.ThisWorkbook.Sheets(1).Cells(4, 8)
Смайлик рисует там 4, 8 ) без пробела последнего
4 и 8 это получается строка и столбец
вначале столбец после строка
в данном случае: Application.ThisWorkbook.Sheets(1).Cells(56, 14)
Изменено: CATS - 22 Апр 2019 13:36:11
 
Цитата
Ivan.kh написал:
показывайте пример структуры реального задания, что там за препятствия и т.д.
Так вот же они - показаны.
Это вот эти вертикальные черточки, которые путь огибает.
Цитата
Ivan.kh написал:
прикладная польза - зачем этот путь строить.
Цель - практическое применение данного алгоритма в задачах другого типа (не связанных с поиском выхода из лабиринта).
 
Вы же Сами указали, что это не реальная структура. У Вас не лабиринт, а что тогда?
Я на этом примере могу показать как выйти в конкретной точке см. вложение...
Страницы: 1 2 След.
Читают тему (гостей: 1)
Наверх