Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Программы для конструирования и дизайна мебели (https://промебельклуб.рф/forum/forumdisplay.php?f=4)
-   -   Exсel. Помощь по составлению таблиц и созданию макросов в мебельных расчётах (https://промебельклуб.рф/forum/showthread.php?t=5953)

AndrewP 13.01.2013 21:32

Exсel. Помощь по составлению таблиц и созданию макросов в мебельных расчётах
 
Что такое макрос. Как его писать. На каком языке он пишется.

Предлагаю опытным форумчанам делиться своими знаниями Exel, в применении к мебельным задачам. С картинками и примерами.

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

Варианты решения данной задачи во вложенном файле.

sparkfire 13.01.2013 21:59

Вложений: 1
Да, это оно, Из всех трех предложенных вариантов разберу и приму к сведению все три, но нет ни одного варианта, с обратным действием, поставил флажок- там добавилась цена в формулу, снял флажок- все онулилось как было...
P.S. Спасибо огромное за тему.
Возможно я неточно сформулировал то, чего хочу,исправился

AndrewP 13.01.2013 23:21

Благодарю за файл примера и более чёткую формулировку задачи. Всё стало намного яснее.

Самый простой способ решения этой задачи через связь флажка с ячейкой. Рассказываю, показываю:
правой кнопкой щёлкаем на элементе управления (флажке). В контекстном меню выбираем "Формат объекта"

http://img13.imageshost.ru/img/2013/...3064dda7fe.jpg

Во вкладке "Элемент управления" выбираем для Флажка 1 связь с ячейкой, например, В2,

http://img13.imageshost.ru/img/2013/...3077b03a6f.jpg

Жмём Ок

Теперь при установке Флажка 1 в ячейке В2 появится слово "ИСТИНА" (оно же означает "1" - единица), при снятии флажка "ЛОЖЬ" (оно же "0" - ноль).

Тоже повторяем для Флажка 2 и Флажка 3.

В целевой ячейке (обведенной рамкой) введим формулу =F2*B2+F4*B4+F6*B6, т.е перемножаем цену товара на ячейки, зависимые от Флажков.

Чтобы целевые ячейки не мозолили глаза и таблица выглядела эффектно, столбец В можно просто скрыть (работать таблица от этого не перестанет)

http://img13.imageshost.ru/img/2013/...30a0a189d9.jpg

Радуемся (не забываем) :)
Готовый ответ во вложении. Но рекомендую самостоятельно прийти к нему, повторив вышеописаный "фокус".

sparkfire 14.01.2013 06:27

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

AndrewP 14.01.2013 09:43

Цитата:

Сообщение от sparkfire (Сообщение 212746)
хочу научиться их писать

Вначале о макросе.

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

Как создаются макросы разберём на простом примере.

Скопировать значение ячейки А1 в ячейку В1.

Создаём новую книгу и Сохраняем её.
В ячейку А1 вводим любое число.

Начинаем запись макроса: Сервис - Макрос - Начать запись
http://img13.imageshost.ru/img/2013/...3884525930.jpg

Всплывает окошко:
http://img13.imageshost.ru/img/2013/...38a01b2f11.jpg
Рассмотрим его внимательно.
Имя макроса автоматом предлагается Макрос1, можно назвать его и по своему например Мой_макрос_который_копирует_значение. Важно! Имя макроса не должно содержать пробелов!

Сочетание клавиш. Можно не назначать. Но если действия выполняемые макросом будут очень часты, удобно назначить "горячую клавишу" например Сtrl+й. Важно! Если назначите макросу уже зарезервированные системой сочетания (такие как Сtrl+с - копировать, Сtrl+v - вставить ...), то в этой книге после нажатия сочетаний будет работать макрос, а не они. Латинские и русские буквы различаются. Поэтому Сtrl+й и Сtrl+q будут различаться, хотя и будем нажимать одну и ту же клавишу.

Сохранить в .... Здесь в выпадающем меню предлагается сохранить макрос только в этой книге. Так, наше Сtrl+й, будет работать только здесь, а в любой другой книге Сtrl+й - работать не будет. Если же мы сохраним в личной книге макросов, то макрос будет работать в любой даже вновь созданной книге.

Описание. Можно не заполнять. Автоматом туда вписывается комментарий когда и кем создан макрос. Если что-то хотите для напоминания ещё туда записать - на здоровье - на работу макроса это влиять не будет.

Нажали ОК.

Теперь работаем ручками, т.е. клавиатурой или мышью. Эксель всё запоминает и записывает последовательность наших действий.

Кликаем на ячейке А1, затем Сtrl+с - копируем, кликаем на ячейке В1, Сtrl+v - вставляем.

Готово! Теперь нам надо остановить запись. Сделать это можно, нажав кнопку на всплывшей панели остановки макроса, а можно опять же через меню Сервис - Макрос - Остановить запись

http://img13.imageshost.ru/img/2013/...3909e310f0.jpg

А теперь самое интересное! Залезем в запись макроса, в программу, которую Эксель сделал следя за нашими действиями и переводя их на язык VBA - Вижуал Бейсик фор Апликейшн.

Сервис - Макрос - Макросы (или Alt+F8)

http://img13.imageshost.ru/img/2013/...39218bb771.jpg

В появившемся окне, выбираем "Войти"

http://img13.imageshost.ru/img/2013/...393ebbe2dc.jpg

Открывается наш записанный макрос.

http://img13.imageshost.ru/img/2013/...395d9e76e0.jpg

Это автоматическая запись. Всё это можно было точно также набирать в данной программе ручками, зная язык программирования VBA.

Начинается программа с Sub и далее через пробел название программы
Затем после ' идут комментарии не влияющие на ход выполнения программы - эти строки зелёные.

Далее чёрным - это исполняемые строки программы.

В конце End Sub - конец программы.

Попробуем прочитать нашу программу.

Selection.Copy - Выделенное. Скопировать
Range("B1").Select - Ячейку B1. Выделить
ActiveSheet.Paste - На текущем листе. Вставить

Т.е. макрос записал, что копируется не ячейка А1, а копируется любая выделенная ячейка в B1.
Непорядок. :(
Останавливаем выполнение макроса. Жмём значок "квадратик" в верхней панели.

http://img13.imageshost.ru/img/2013/...398ad4f119.jpg

Переписываем макрос добавив вверху строку

Range("A1").Select - Ячейку А1. Выделить
Selection.Copy
Range("B1").Select
ActiveSheet.Paste

Порядок! Сохраняем нашу редакцию макроса.

http://img13.imageshost.ru/img/2013/...399e490c30.jpg

Закрываем и тестируем нашу книгу. Вводим любое число в А1. Кликаем абы где, например, на С25. Сtrl+й * и ... Работает, ёшки-матрёшки! Или как гениально высказался предыдущий оратор: "планка самооценки" поднялась (а в месте с ней скорость нарубки капусты).
:)

*если вы не назначали горячих клавиш, то макрос можно также выполнить Сервис - Макрос - Макросы - Выполнить.

Э-э, рано радоваться. Самостоятельное задание. Написать макрос копирования занчение ячейки А1 на другой лист в ячейку В2 и раскрашивания её красным цветом. Успехов.
Приду проверю, раздам конфектки.
:)

(Сегодняшний урок во вложении)

ПРАКТИК 14.01.2013 10:36

Вложений: 1
Запишусь на курсы!)...
AndrewP, хорошее дело затеял... *THUMBS UP*
Пробую домашнее задание.

ame 14.01.2013 13:10

Статьи по различным аспектам работы в Microsoft Excel

_konstruktor_ 14.01.2013 13:27

Цитата:

Сообщение от ame (Сообщение 212770)

это лучший сайт/форум в рунете из всех мной виденых

sparkfire 14.01.2013 14:16

Урок усвоил, все получилось!
Хотелось бы узнать еще кое-что: Помимо расчетных таблиц, прайсов и подобного - ведем в экселе баланс конторы(контора небольшая, даже очень маленькая, всего 6 человек, из них четверо-трудяги)
Вопрос вот в чем.
Баланс конторы включает в себя много листов, на каждом свое, где-то расчет зарплат, где-то ведение баланса, учет затрат, приходов-расходов и прочее. Можно ли с помощью макросов, организовать ежедневную выдержку по некоторым параметрам( например- заключенные за день договоры, выдано рабочим денег, приходы по установкам и прочее, в один (читай- другой) файл, уже относящийся чисто к отчетам.
Например так: сегодня 1 августа такого-то года, в конце рабочего дня- ставится где-то галочка(которую можно изменить только один раз), и все запланированные выжимки из большого(по размерам) документа,помещаются в отдельный файл( например- Отчеты.xls)
Там- 1 лист документа, одна таблица, содержащая нужные данные, которые там копятся каждый рабочий день, и из них, потом делается статистика.
Думаю, невнятно и сумбурно объяснил, но делать пример сейчас времени нету, надо уезжать срочно к заказчику... если что- вечерком попробую накалякать..

sumy-mebel 14.01.2013 14:33

Цитата:

Сообщение от _konstruktor_ (Сообщение 212771)
это лучший сайт/форум в рунете из всех мной виденых

Вполне соглашусь во всём, по брожению в сети лучше не встречал в плане профессионализма!


Текущее время: 13:16. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL