Привет всем! 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, оставляем ту, значение которой было больше со значением, которое получилось в процессе вычитания) Файл с наработками приложил, дальше сдвинуться не получается. Может кто надвинет на мысль?
Привет всем! 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
Немного переписал описание, возможно будет более понятно.
Есть несколько автофигуры с разными цветами и числом(назовем его здоровье автофигуры) Есть макрос, который передвигает эти фигуры в выбранные ячейки(нажимаем на автофигуру, нажимаем на закрашенную область, автофигура передвинулась) 1) как заставить макрос определять, на какую автофигуру мы нажали, и чтоб макрос выполнял действия именно с этой автофигурой?(возможно - как в шашках) 2) каким макросом лучше сделать копию автофигуры в соседнюю ячейку(возможно предоставить выбор ячейки) 3) каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2 другого цвета(в пределах закрашенных ячеек), то нужно сделать перемещение автофигуры1 в ячейку автофигуры2, сделать вычитание значений у обоих фигур(из значения автофигуры1 вычесть значение автофигуры2, и наоборот). 4) проверка: если у автофигуры значение <= 0, тогда она удаляется. файл все тот же.
Немного переписал описание, возможно будет более понятно.
Есть несколько автофигуры с разными цветами и числом(назовем его здоровье автофигуры) Есть макрос, который передвигает эти фигуры в выбранные ячейки(нажимаем на автофигуру, нажимаем на закрашенную область, автофигура передвинулась) 1) как заставить макрос определять, на какую автофигуру мы нажали, и чтоб макрос выполнял действия именно с этой автофигурой?(возможно - как в шашках) 2) каким макросом лучше сделать копию автофигуры в соседнюю ячейку(возможно предоставить выбор ячейки) 3) каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2 другого цвета(в пределах закрашенных ячеек), то нужно сделать перемещение автофигуры1 в ячейку автофигуры2, сделать вычитание значений у обоих фигур(из значения автофигуры1 вычесть значение автофигуры2, и наоборот). 4) проверка: если у автофигуры значение <= 0, тогда она удаляется. файл все тот же.lFJl
как заставить макрос определять, на какую автофигуру мы нажали
Если вы "привязываете" автофигуры к одному и тому же макросу, то узнать название автофигуры можно так [vba]
Код
Public Sub Click() MsgBox Application.Caller End Sub
[/vba] Ну, а дальше по имени, а оно в пределах листа уникально определяете что делать.
Цитата
каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2
Для начала нужно определить что означает нажата 1-ая фигура, а затем 2-ая? А так заведите строковую переменную и в том же макросе нажатия на автофигуру Если переменная пуста, то добавляете имя первой нажатой автофигуры, если не пуста, то проверяете текущая нажатая в пределах цвета 1-ой Если да, то делаете что нужно и сбрасываете переменную, чтобы начать новый цикл. Если нет, то сбрасываете переменную имени первой нажатой (или оставляете, пока не будет нажата фигура с ячейками под с тем же цветом, или устанавливаете текущую автофигуру как первую - всё зависит от той логики задачи, которую полностью знаете только вы )
Доброе время суток
Цитата
как заставить макрос определять, на какую автофигуру мы нажали
Если вы "привязываете" автофигуры к одному и тому же макросу, то узнать название автофигуры можно так [vba]
Код
Public Sub Click() MsgBox Application.Caller End Sub
[/vba] Ну, а дальше по имени, а оно в пределах листа уникально определяете что делать.
Цитата
каким макросом лучше сделать, если была нажата автофигура1 одного цвета, и затем нажата автофигура2
Для начала нужно определить что означает нажата 1-ая фигура, а затем 2-ая? А так заведите строковую переменную и в том же макросе нажатия на автофигуру Если переменная пуста, то добавляете имя первой нажатой автофигуры, если не пуста, то проверяете текущая нажатая в пределах цвета 1-ой Если да, то делаете что нужно и сбрасываете переменную, чтобы начать новый цикл. Если нет, то сбрасываете переменную имени первой нажатой (или оставляете, пока не будет нажата фигура с ячейками под с тем же цветом, или устанавливаете текущую автофигуру как первую - всё зависит от той логики задачи, которую полностью знаете только вы )anvg
Сообщение отредактировал anvg - Пятница, 18.09.2015, 09:51