Цитата:
Разрабатывал в своё время серии офисных "мебелей", детских, ванных, гостиных... Когда заказчик узнавал, что предлагаемых вариантов (по ТЗ) в серии несколько тысяч - просто охреневал. Когда же отрабатывали серию с маркетологами и технологами, то в живых оставалась сотня - другая. Когда же шли реальные продажи, то счёт шёл уже на десятки. Так вот, в случае со sparkfire как раз речь об этих реально продаваемых десяти-двадцати шкафах. Сообща накидать возможные варианты - это можно. Сейчас, правда, далеко от своего компа, чтобы порыть архивы. Там где-то есть глобальные разработки шкафной темы со всеми возможными вариантами, начиная от расположения в плане (пристенный, островной, перегородка...), вертикального расположения (напольный, настенный, антресоль....) и т.д. вплоть до учёта функций отделений (для белья, книг, шляп, обуви...) и конструкций элементов, например, цоколя (бесцокольный, с цокольными планками, с цокольным коробом, с цокольным выдвижным ящиком...) с учётом всевозможных конструктивных особенностей (с передней накладной цокольной планкой, с передней накладной врезной цокольной планкой, с передней вкладной цокольной планкой...) и соответствующими параметрами (заглубление цокольной планки относительно передней кромки корпуса и т.д.) Потом посчитаем варианты (а там многое мультиплицируется); полагаю, что даже отбросив параметры, выйдем за порядок в десятки тысяч. |
Цитата:
Думаю, десяток, полтора будет вполне достаточно. Остальные все "извращения" - по желанию заказчика. Чем больше заказчику предлагаешь - те больше он входит в "ступор".... И, как ни странно, повышается вероятность того, что он пойдет туда, где 5 вариантов и не выносят мозг)) |
Просьба к AndrewP
Андрей, есть просьба маленькая.
Начал "рыть" макросы, голова, правда, пухнет, но что то уже начало доходить, хотя бы по объектам, по свойствам... Просьба такого плана: в экселе есть разные элементы управления, и есть желание научится ими програмно управлять, т.е. их свойствами и именно через макросы... Нужно не готовое решение, а пример... как именно это сделать, как именно должен выглядеть управляющий макрос? Допустим на листе есть элемент TextBox и нужно изменить его свойство (не важно какое, пусть будет вертикальный размер) в зависимости от значения в какой нибудь произвольной ячейке... Буквально: Если (....), То (....). Андрей, если владеешь такими тонкостями, то научи уму-разуму....*SORRY* И ещё... элементы управления имеют размеры (вертик. гориз.) и привязку (отступы от верха и левого края либо листа, либо пользовательской формы)... так вот, эти цифры всегда кратны 0,75 у.е. (пунктам наверное).... вопрос... этот шаг есть величина постоянная для экселя, или где то её можно изменить на более "покладистую"? |
Цитата:
' ' Макрос1 Макрос ' Присваиваем переменной "а" значение из ячейки "B2" а = Range("B2").FormulaR1C1 ' Присваиваем высоте элемента "Group Box 1" значение а ActiveSheet.Shapes("Group Box 1").Select Selection.ShapeRange.Height = а End Sub Можно прямо, без промежуточной переменной: Sub Макрос2() ' ' Макрос2 Макрос ' ' Можно прямо, без промежуточной переменной: присваиваем высоте элемента "Group Box 1" значение ячейки "B2" ActiveSheet.Shapes("Group Box 1").Select Selection.ShapeRange.Height = Range("B2").FormulaR1C1 End Sub Пример во вложении Цитата:
|
Вложений: 1
Андрей, спасибо огромное за макрос.... буду вникать... тяжеловато даётся
Цитата:
Цитата:
|
Цитата:
По всей видимости это вунтренний экселевский шаг сетки, который сделан для организации графики элементов управления. Как его отключить/изменить не знаю, не знаю даже можно ли это в принципе. Никогда не возникало такой практической задачи. Данная точность расположения элементов управления всегда устраивала. А для какой цели это тебе, ПРАКТИК, надо? Может в твоей конкретной задаче это можно решить по другому? Например, фигуры (прямоугольник, линию, размерную линию) можно рисовать с точностью/шагом 0,1 мм в диапазоне порядка 60 метров. Для чертежей мебельных деталей и изделий - вполне приемлемо (когда-то даже чертежи с присадкой чертил в экселе :)) |
Цитата:
Цитата:
И, подозреваю, что без макросов тут не обойтись...... Андрей, попутно ещё вопрос. Касательно твоего примера (007-го)... Данные в управляющей ячейке меняются, но действия как такового сразу не происходит... макрос нужно запустить вручную, при этом ещё и выбрать какой из них... Так и должно быть? Или всё-таки есть способ при котором макрос запускается сам, да ещё и отслеживает изменения в управляющей ячейке? |
Цитата:
Цитата:
Вот пример во вложении (макрос выполняющийся сам при изменении значения в ячейке B2 изменяет высоту прямоугольника) Макрос находится в пространстве листа. Если разберёшься, то домашнее задание - дописать макрос для изменения ширины и толщины этого прямоугольника. |
Цитата:
Выходные на носу... покопаюсь. |
Цитата:
Цитата:
Вводом в ячейку можно менять не только высоту прямоугольника, но и рисовать целые параметрические шкафы. Всё это позволяют делать макросы. Макросы могут быть в модуле и назначаться некоему действию (нажатию сочетания клавиш, нажатию на переключателе, установке флажка и так далее). Также макросы могут запускаться от других действий (открытия, закрытия книги, при переходе на другой лист в книге и т.п.). Такие макросы записываются не в модуле, а в листе или даже в книге. Вот здесь Вложение 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 и залил во вложение. Также во вложении пример работы макроса со вводом в ячейки и с кнопки (файл "Программа расчёта угловых шкафов (с разными типами макросов)") Побалуйтесь, поразбирайте примеры. :) |
Текущее время: 15:28. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL