Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос VBA на скрытие/раскрытие листов
 
Добрый день, уважаемые разработчики!

Прошу помочь с макросом VBA...
Имеется книга Excel, в которой 7 листов, у последнего имя "MacrosTurningOn".

Задача:
1. При закрытии книги, макрос должен СКРЫВАТЬ (как можно лучше прятать) все листы, кроме последнего - "MacrosTurningOn". А лист "MacrosTurningOn", наоборот, раскрывать.
нарыл в гугле код... Но он требует доработки в части раскрытия листа "MacrosTurningOn"...
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Dim wsheet As Worksheet
For Each wsheet In ActiveWorkbook.Sheets
If wsheet.Name <> "MacrosTurningOn" Then wsheet.Visible = xlVeryHidden
Next
Application.ScreenUpdating = True
End Sub 

2. При открытии книги, пользователь видит, соответственно только 1 лист - "MacrosTurningOn", на котором должна быть кнопка, например, "Готов к работе с книгой".
2.1. При нажатии на эту кнопку происходит следующее:
2.1.1. Раскрываются все скрытые листы (№№ 1-6)
2.1.2. Скрывается 7-ой лист "MacrosTurningOn".

При этом у меня в этой же книге имеется макрос, защищающий листы паролем:
Код
Private Sub Workbook_Open()
 Const MyPassword = "***********"
 With Sheets(1)
 .Unprotect Password:=MyPassword
 .EnableOutlining = True
 .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
 AllowFiltering:=True, UserInterfaceOnly:=True
 End With
 With Sheets(3)
 .Unprotect Password:=MyPassword
 .EnableOutlining = True
 .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
 AllowFiltering:=True, UserInterfaceOnly:=True
 End With
 With Sheets(4)
 .Unprotect Password:=MyPassword
 .EnableOutlining = True
 .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
 AllowFiltering:=True, UserInterfaceOnly:=True
 End With
 With Sheets(5)
 .Unprotect Password:=MyPassword
 .EnableOutlining = True
 .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
 AllowFiltering:=True, UserInterfaceOnly:=True
 End With
 With Sheets(6)
 .Unprotect Password:=MyPassword
 .EnableOutlining = True
 .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
 AllowFiltering:=True, UserInterfaceOnly:=True
 End With
  End Sub 

Соответственно, нужно сделать:
а) макрос на раскрытие листа "MacrosTurningOn" и скрытие других листов при закрытии книги;
б) макрос на кнопку с вышеописанными функциями (пункт 2.1.)

Заранее благодарен за помощь!
Изменено: Slimka - 02.09.2015 14:44:06
Макрос VBA для автоматической группировки
 
Добрый день!

Прошу помочь с написанием макроса, который бы работал следующим образом:

0. На листе создается кнопка "Группировка", которая активирует макрос, при нажатии на нее; кнопка "Сгруппировать", которая группирует все существующие связи; "Разгруппировать", которая разгруппирует их, соответственно.

При нажатии на кнопку "Группировка", происходят следующие процессы:
1. Сбрасываются (удаляются) все действующие группировки на листе;
2. Определяется диапазон работы макроса - со строки № 6 листа (включительно), до строки, в столбце В которой значение "Общий итог" (номер строки не определен!!);
3. Группируются строки, в столбце А которых стоит значение "-", разумеется каждый набор последовательно идущих строк, удовлетворяющих условие, группируется отдельно, "не задевая" те строки, которые условие не удовлетворяют.

ПС. Если есть вариант решения задачи не макросом, а иным способом - то будет вообще супер!

Пример прилагаю. Благодарю за уделенное время!
Изменено: Slimka - 10.07.2015 12:39:48
Выделение строк курсивом по заданному условию и автоматическая зарисовка границ таблицы
 
Здравствуйте!

Имеется таблица с данными (пример прилагаю), второй столбец которой включает в себя информацию о клиентах и номерах их договоров. Первый столбец представляет собой нумерацию исключительно клиентов (напротив номеров договоров всегда и обязательно стоит "-").

Прошу Вас оказать помощь в следующем:
1. Необходимо выделять курсивом целиком строки с номерами договоров. При этом, номера договоров могут начинаться на "1","2","3","4","5","6","7","8","9","0","Овер", а в столбце нумерации возле них всегда стоит "-".
2. Необходимо определить границы таблицы и нарисовать сетку. При этом известно, что верхняя левая крайняя ячейка таблицы - A3, а верхняя правая - D3. Нижние крайние ячейки таблицы неизвестны, но принято считать, что таблица не может быть длиннее строки 300. Однако сетку надо рисовать не до трехсотой строки, а до первой пустой. Также известно, что пустот "внутри" таблицы быть не может. Первая пустота в столбце В означает конец таблицы (именно столбце В, а ни в коем случае не А - см. пример).

Желательно решить задачу, не прибегая к VBA (там я совсем ноль и не смогу в будущем что-нибудь подправить...).

Заранее благодарен за помощь!
Нумерация строк таблицы по заданному условию
 
Добрый день, друзья! Снова потребовалась Ваша помощь. Задача не сложная, но мне не хватает знаний для ее решения.
Итак, к делу...
Имеется таблица с перечнем Клиентов и Номеров договоров, указанными в одном столбце. При этом, "номера договоров" могут иметь следующий вид: "1"&"*";"2"&"*";"3"&"*";"4"&"*";"5"&"*";"6"&"*";"7"&"*";"8"&"*";"9"&"*";"0"&"*";"Овер"&"*".
Остальные столбцы для целей нашей задачи не важны, будем считать, что в них "прочая информация".

Необходимо провести нумерацию строк таким образом, чтобы считались только Наименования клиентов. При этом напротив номеров договоров должно вместо номер строки стоять "-", а в пустых строках не должно быть ничего.

Пример прилагаю. У меня хватило мозгов вот на такую формулу:
Код
ЕСЛИ(ЕПУСТО(B6);""; 
ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ($E6;$G$1:$G$2;0));F6;0)
ЕСЛИ(B6={"1"&"*";"2"&"*";"3"&"*";"4"&"*";"5"&"*";"6"&"*";"7"&"*";"8"&"*";"9"&"*";"0"&"*";"Овер"&"*"};A6="-";
СЧЁТЗ($B$6:B6)))

Но она не работает... Судя по ошибке, выдаваемой excel'ем, проблема в том, что функция ЕСЛИ() не предназначена для массивов данных...

ПС. Ссылки на ячейки из таблицы-оригинала... Для примера не правил
Изменено: Slimka - 10.07.2015 10:18:30
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Доброго дня, уважаемые форумчане!
Пишу Вам с просьбой о помощи. Пытаюсь второй день автоматизировать достаточно большой отчет, и застрял в самом конце... Мне необходимо сделать суммирование суммы в случае, когда совпадает наименование клиента или номер договора, а также товар относится к категории "отличный" или "хороший". Пример таблиц сделал и выкладываю...

Идеально было бы написать формулу, которая бы не требовала создания вспомогательных столбцов. Изменять вид таблицы тоже не очень бы хотелось, так как отчет большой, и для целей реализации автоматизации более ранних его стадий приходилось делать многое - большие формулы, сводная таблица и прочее. Последний этап (т.е. сейчас) - это копия сводной таблицы на отдельный лист в виде обычной таблицы и добавление дополнительного столбца.

Заранее благодарен за уделенное время!
Страницы: 1
Наверх