Показать сообщение отдельно
Старый 02.02.2013, 00:48   #50
AndrewP
Местный
 
Регистрация: 13.08.2010
Сообщений: 1,615
Сказал(а) спасибо: 11,834
Поблагодарили 9,536 раз(а) в 1,526 сообщениях
Вес репутации: 2235
AndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспорима
По умолчанию

Цитата:
Сообщение от Vostorg Посмотреть сообщение
можно попросить
Просить-то можно, только...


Цитата:
Сообщение от AndrewP Посмотреть сообщение
Извини, не могу подробно и с картинками остановиться (сейчас далеко от своего компа).
Как только доберусь, так сразу (полагаю через недельку, или около того). Со всеми картинками и пошаговыми инструкциями. А сейчас могу только урывками и давать обьяснения в основном текстом.

Вводом в ячейку можно менять не только высоту прямоугольника, но и рисовать целые параметрические шкафы.

Всё это позволяют делать макросы. Макросы могут быть в модуле и назначаться некоему действию (нажатию сочетания клавиш, нажатию на переключателе, установке флажка и так далее).

Также макросы могут запускаться от других действий (открытия, закрытия книги, при переходе на другой лист в книге и т.п.). Такие макросы записываются не в модуле, а в листе или даже в книге. Вот здесь
Вложение 69762

Представленное в примере 008 изменение высоты прямоугольника в зависимости от значения ячейки выполняется макросом реагирующим на изменение указанного диапазона ячеек листа.

Например, задали, что если что-то поменялось в ячейках [B2:B4] на данном листе, то тут же включается некий макрос. Если же мы изменим значение В6 или других ячеек вне "диапазона срабатывания", то ничего не произойдёт.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lbh As Range: Set lbh = [B2:B4] 'диапазон изменяемых ячеек
If Not Intersect(lbh, Target) Is Nothing Then

' далее, собственно, пишем, что должно происходить, будь чьи шаловливые пальцы чего накалякают в указанных ячейках

' Присваиваем переменной а значение из ячейки "B2" и переводим _
значение ячейки (миллиметры) в единицы размера фигуры
h = Range("B2").FormulaR1C1 / 10

' Присваиваем высоте фигуры "Прямоугольник 1" значение из ячейки "B2"

ActiveSheet.Shapes("Прямоугольник 1").Select
Selection.ShapeRange.Height = h

' И далее, допустим, выделяем ячейку "B2", для нового ввода высоты в ячейку
Range("B2").Select

' Заканчиваем
End If

End Sub

Картинка, где именно в листе прописывается макрос, получилась здесь не очень разборчивой. Чтобы её лучше рассмотреть, я её "отпринскринил" на лист примера 008 и залил во вложение. Также во вложении пример работы макроса со вводом в ячейки и с кнопки (файл "Программа расчёта угловых шкафов (с разными типами макросов)")

Побалуйтесь, поразбирайте примеры.

Последний раз редактировалось AndrewP; 15.12.2014 в 02:57.
AndrewP вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
semdizain (02.02.2013), sparkfire (02.02.2013), todor_tsanov (02.02.2013), zzerg (18.05.2014), ПРАКТИК (02.02.2013)