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

Вход

Регистрация

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

 

= Мир MS Excel/Работа со значениями автофигур - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа со значениями автофигур (Макросы/Sub)
Работа со значениями автофигур
lFJl Дата: Четверг, 17.09.2015, 10:20 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Привет всем!
1) Для удаления цвета заливки со всего листа, я использую Cells.Interior.Color = xlNone
можете сказать, как удалять только то, что было нарисовано этим макросом Range(ad_).Offset(r_, c_).Resize(rr_, cc_).Interior.Color = col
2) У автофигуры должно быть положительное значение. При отрицательном значении автофигура удаляется
4) Дальше нужна возможность "поделить",сделать копию автофигуры(если мы нажимаем на автофигуру, а не на поле, закрашенное в зеленый(col))
Допустим, у нас имеется автофигура со значением = 100. После 1 нажатия закрашиваются соседние ячейки, и если мы нажимаем на автофигуру, а не на закрашенную ячейку, то нам предлагают поделить автофигуру, причем мы можем задать значение только 0-99
после ввода значения мы выбираем ячейку, в которую можем поместить копию автофигуры, со значением, которое выбрали.
5) Нужна возможность производить действия с копией аналогичные действиям оригинала(скрипт должен понимать, от какой автофигуры заработал скрипт)
6) Взаимодействие между автофигурами: Если автофигуры одинакового цвета. Нужна возможность "сливания" две фигуры(например, если мы нажали на фигуру1, появляется радиус, и нажимаем на фигуру2. если она находится в радиусе фигуры1 и того же цвета что и фигура1, то складываются значения фигуры1 и фигуры2, затем фигуру 2 удаляем. Если фигуры разного цвета, то вычитаем значения фигуры1 и фигуры2, оставляем ту, значение которой было больше со значением, которое получилось в процессе вычитания)
Файл с наработками приложил, дальше сдвинуться не получается. Может кто надвинет на мысль? :)
К сообщению приложен файл: VBA1-.xlsm (20.2 Kb)


Сообщение отредактировал lFJl - Четверг, 17.09.2015, 11:36
 
Ответить
СообщениеПривет всем!
1) Для удаления цвета заливки со всего листа, я использую Cells.Interior.Color = xlNone
можете сказать, как удалять только то, что было нарисовано этим макросом Range(ad_).Offset(r_, c_).Resize(rr_, cc_).Interior.Color = col
2) У автофигуры должно быть положительное значение. При отрицательном значении автофигура удаляется
4) Дальше нужна возможность "поделить",сделать копию автофигуры(если мы нажимаем на автофигуру, а не на поле, закрашенное в зеленый(col))
Допустим, у нас имеется автофигура со значением = 100. После 1 нажатия закрашиваются соседние ячейки, и если мы нажимаем на автофигуру, а не на закрашенную ячейку, то нам предлагают поделить автофигуру, причем мы можем задать значение только 0-99
после ввода значения мы выбираем ячейку, в которую можем поместить копию автофигуры, со значением, которое выбрали.
5) Нужна возможность производить действия с копией аналогичные действиям оригинала(скрипт должен понимать, от какой автофигуры заработал скрипт)
6) Взаимодействие между автофигурами: Если автофигуры одинакового цвета. Нужна возможность "сливания" две фигуры(например, если мы нажали на фигуру1, появляется радиус, и нажимаем на фигуру2. если она находится в радиусе фигуры1 и того же цвета что и фигура1, то складываются значения фигуры1 и фигуры2, затем фигуру 2 удаляем. Если фигуры разного цвета, то вычитаем значения фигуры1 и фигуры2, оставляем ту, значение которой было больше со значением, которое получилось в процессе вычитания)
Файл с наработками приложил, дальше сдвинуться не получается. Может кто надвинет на мысль? :)

Автор - lFJl
Дата добавления - 17.09.2015 в 10:20
lFJl Дата: Пятница, 18.09.2015, 07:39 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Немного переписал описание, возможно будет более понятно.

Есть несколько автофигуры с разными цветами и числом(назовем его здоровье автофигуры)
Есть макрос, который передвигает эти фигуры в выбранные ячейки(нажимаем на автофигуру, нажимаем на закрашенную область, автофигура передвинулась)
1) как заставить макрос определять, на какую автофигуру мы нажали, и чтоб макрос выполнял действия именно с этой автофигурой?(возможно - как в шашках)
2) каким макросом лучше сделать копию автофигуры в соседнюю ячейку(возможно предоставить выбор ячейки)
3) каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2 другого цвета(в пределах закрашенных ячеек), то нужно сделать перемещение автофигуры1 в ячейку автофигуры2, сделать вычитание значений у обоих фигур(из значения автофигуры1 вычесть значение автофигуры2, и наоборот).
4) проверка: если у автофигуры значение <= 0, тогда она удаляется.
файл все тот же.
 
Ответить
СообщениеНемного переписал описание, возможно будет более понятно.

Есть несколько автофигуры с разными цветами и числом(назовем его здоровье автофигуры)
Есть макрос, который передвигает эти фигуры в выбранные ячейки(нажимаем на автофигуру, нажимаем на закрашенную область, автофигура передвинулась)
1) как заставить макрос определять, на какую автофигуру мы нажали, и чтоб макрос выполнял действия именно с этой автофигурой?(возможно - как в шашках)
2) каким макросом лучше сделать копию автофигуры в соседнюю ячейку(возможно предоставить выбор ячейки)
3) каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2 другого цвета(в пределах закрашенных ячеек), то нужно сделать перемещение автофигуры1 в ячейку автофигуры2, сделать вычитание значений у обоих фигур(из значения автофигуры1 вычесть значение автофигуры2, и наоборот).
4) проверка: если у автофигуры значение <= 0, тогда она удаляется.
файл все тот же.

Автор - lFJl
Дата добавления - 18.09.2015 в 07:39
anvg Дата: Пятница, 18.09.2015, 09:00 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток
Цитата
как заставить макрос определять, на какую автофигуру мы нажали
Если вы "привязываете" автофигуры к одному и тому же макросу, то узнать название автофигуры можно так
[vba]
Код
Public Sub Click()
      MsgBox Application.Caller
End Sub
[/vba]
Ну, а дальше по имени, а оно в пределах листа уникально определяете что делать.
Цитата
каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2

Для начала нужно определить что означает нажата 1-ая фигура, а затем 2-ая? А так заведите строковую переменную и в том же макросе нажатия на автофигуру
Если переменная пуста, то добавляете имя первой нажатой автофигуры, если не пуста, то проверяете текущая нажатая в пределах цвета 1-ой
Если да, то делаете что нужно и сбрасываете переменную, чтобы начать новый цикл. Если нет, то сбрасываете переменную имени первой нажатой (или оставляете, пока не будет нажата фигура с ячейками под с тем же цветом, или устанавливаете текущую автофигуру как первую - всё зависит от той логики задачи, которую полностью знаете только вы <_< )


Сообщение отредактировал anvg - Пятница, 18.09.2015, 09:51
 
Ответить
СообщениеДоброе время суток
Цитата
как заставить макрос определять, на какую автофигуру мы нажали
Если вы "привязываете" автофигуры к одному и тому же макросу, то узнать название автофигуры можно так
[vba]
Код
Public Sub Click()
      MsgBox Application.Caller
End Sub
[/vba]
Ну, а дальше по имени, а оно в пределах листа уникально определяете что делать.
Цитата
каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2

Для начала нужно определить что означает нажата 1-ая фигура, а затем 2-ая? А так заведите строковую переменную и в том же макросе нажатия на автофигуру
Если переменная пуста, то добавляете имя первой нажатой автофигуры, если не пуста, то проверяете текущая нажатая в пределах цвета 1-ой
Если да, то делаете что нужно и сбрасываете переменную, чтобы начать новый цикл. Если нет, то сбрасываете переменную имени первой нажатой (или оставляете, пока не будет нажата фигура с ячейками под с тем же цветом, или устанавливаете текущую автофигуру как первую - всё зависит от той логики задачи, которую полностью знаете только вы <_< )

Автор - anvg
Дата добавления - 18.09.2015 в 09:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа со значениями автофигур (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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