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

Страницы: 1
Макрос VBA на скрытие/раскрытие листов
 
Викктур, учту Ваши комментарии. Я делаю это не для того, чтобы "набивать статусики с количеством сообщений", а чтобы человек, который мне помогает, понимал, что я здесь и надеюсь на решение вопроса. У Вас нечего предложить по теме?
Макрос VBA на скрытие/раскрытие листов
 
Ну уж не настолько я тупой, название листа добавил, разумеется =)
Нет, окно все равно выскакивает...  При том, подчеркиваю, сразу при открытии файла! Даже не успевает прогрузиться кнопка, открывающая скрытые листы
Макрос VBA на скрытие/раскрытие листов
 
Эта ошибка вылетает при открытии файла, до каких-либо действий.Ваши коды залил полностью, добавив лишь
Цитата
TSN написал:
верно будет такКод?1ThisWorkbook.Sheets("ЗДЕСЬ НАЗВАНИЕ ЛИСТА КОТОРЫЙ НАДО АКТИВИРОВАТЬ").Activate
Макрос VBA на скрытие/раскрытие листов
 
Вот
Изменено: Slimka - 02.09.2015 16:48:02
Макрос VBA на скрытие/раскрытие листов
 
Код для "ЭтаКнига":
Код
  
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 = xlSheetVisible
Next
For Each wsheet In ActiveWorkbook.Sheets
If wsheet.Name <> "MacrosTurningOn" Then wsheet.Visible = xlSheetVeryHidden
Next
Application.ScreenUpdating = True
End Sub


Код для кнопки "Modules":
Код
Sub Macros()
Application.ScreenUpdating = False
Dim wsheet As Worksheet
For Each wsheet In ActiveWorkbook.Sheets
If wsheet.Name <> "MacrosTurningOn" Then wsheet.Visible = xlSheetVisible
If wsheet.Name = "MacrosTurningOn" Then wsheet.Visible = xlVeryHidden
Next
Application.ScreenUpdating = True
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
 Sheets("____ЗДЕСЬ НАЗВАНИЕ ЛИСТА КОТОРЫЙ НАДО СДЕЛАТЬ АКТИВНЫМ ПОСЛЕ РАСКРЫТИЯ СКРЫТЫХ_____").Select
End Sub
Правда, есть один минус... Листом № 6 у меня является сводная таблица, которая также макросом была защищена:
Код
With Sheets(6)
 .Unprotect Password:=MyPassword
 .EnableOutlining = True
 .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
 AllowFiltering:=True, UserInterfaceOnly:=True
 End With
Ее защиту пришлось удалить, в связи с тем, что выдавало такую странную ошибку:
Нельзя изменять "сводной таблицы" на защищенном листе

Если есть мысли, как этот вопрос решить, сохранив защиту на сводной таблице - буду очень рад. Также буду благодарен комментариям и предложениям по оптимизации кода.
Макрос VBA на скрытие/раскрытие листов
 
Если лупить
Код
If oSheet.Name <> "MacrosTurningOn" Then oSheet.Visible = 2 Else oSheet.Visible = -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 для автоматической группировки
 
Решение проблемы есть по указанной ссылке.
Цитата
http://www.excelworld.ru/forum/10-18234-1
Макрос 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 (там я совсем ноль и не смогу в будущем что-нибудь подправить...).

Заранее благодарен за помощь!
Нумерация строк таблицы по заданному условию
 
Спасибо
Нумерация строк таблицы по заданному условию
 
Спасибо! Только немного доделал, чтобы в пустых строках не ставился "-".
Код
=ЕСЛИ(C4<>0; ЕСЛИ(ИЛИ(И(ЛЕВБ(C4)>="0";ЛЕВБ(C4)<="9");ЕПУСТО(C4);ЛЕВБ(C4;4)="Овер");"-";МАКС(B$3:B3)+1);"")
Нумерация строк таблицы по заданному условию
 
Добрый день, друзья! Снова потребовалась Ваша помощь. Задача не сложная, но мне не хватает знаний для ее решения.
Итак, к делу...
Имеется таблица с перечнем Клиентов и Номеров договоров, указанными в одном столбце. При этом, "номера договоров" могут иметь следующий вид: "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
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Благодарю всех за помощь!
Не нашел, где тут можно поставить плюсики, если подскажете - организую =)
Изменено: Sl1mka - 10.07.2015 09:38:40
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Цитата
ikki написал: где генерируется? как в Excel попадает?
Есть огромная таблица в excel. Из нее строится сводная в том же файле, на другом листе. Часть сводной копируется формулами на третий лист - эта таблица является исходной для нашей задачи.

Попробовал сейчас Ваш пример перенести к себе в файл, почему-то не фурычит... =/

Сорри, это кривые руки не фурычат. Все работает. Буду на основе Вашего примера доделывать. Спасибо!
Изменено: Sl1mka - 09.07.2015 18:10:03
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Проблема в том, что таблица генерируется автоматически и может меняться каждую минуту. Нужна универсальная формула, которую можно было бы запилить и протащить, которая бы предусматривала как проверку "клиент это или один из его договоров", так и проверку "хорошее ли в анализируемой строке качество товара"
 
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Так как надо работает пока только вариант ikki. Но неужели нет решения без доп.столбца и сводной?  
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Это номера договоров, которые есть у клиентов. моя "результирующая таблица" есть отображение сводной таблицы, где сначала идет Клиент, а ниже перечислены все его договоры.
Изменено: Sl1mka - 09.07.2015 17:42:14
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Такой вариант мне известен, однако вся суть в том, что столбцы должны стоять рядом и показывать разницу... Поэтому, увы, но не подходит
Что-то вроде СУММЕСЛИМН только с доп. условием "ИЛИ"
 
Доброго дня, уважаемые форумчане!
Пишу Вам с просьбой о помощи. Пытаюсь второй день автоматизировать достаточно большой отчет, и застрял в самом конце... Мне необходимо сделать суммирование суммы в случае, когда совпадает наименование клиента или номер договора, а также товар относится к категории "отличный" или "хороший". Пример таблиц сделал и выкладываю...

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

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