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

Страницы: 1
Поставить пароль на проект VBA
 
каким же образом код может поставить пароль на другой открытый проект?  
 
нашёл только свойство "только для чтения"  
---  
Const vbext_pp_locked = 1  
Const vbext_pp_none = 0  
   Member of VBIDE.vbext_ProjectProtection  
---    
Protection Property (VBA Add-In Object Model)    
Returns a value indicating the state of protection of a project. Read-only.  
Return Values  
vbext_pp_locked The specified project is locked.    
vbext_pp_none The specified project isn't protected.    
---  
 
извиняюсь за некрофильство, но очень надо, подскажите пожалуйста!
скрыть/показать строки по кнопке (а их будет много)
 
обнаружил глюк.    
 
защищаю лист вот так:  
 
ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True  
 
защитил, проверяю - кнопка работает.    
сохраняю, закрываю Excel.  
открываю снова - ругается на изменени свойства .ShowDetail.  
 
меняю в строчке защиты Contents:=True на Contents:=False - так всё работает, но позволяет юзеру менять значения в ячейках. а это нехорошо.  
 
как быть?
скрыть/показать строки по кнопке (а их будет много)
 
{quote}{login=ikki}{date=12.05.2012 11:55}{thema=}{post}  
пароль проекта - думаю, по стойкости что-то промежуточное.{/post}{/quote}  
а как из макроса поставить пароль на vba проект (не на самого себя, а на другую книгу)?
скрыть/показать строки по кнопке (а их будет много)
 
Игорь67, да, так работает, и внешне выглядит как надо.    
Но тогда пароль остаётся в макросе и его любой сможет выцепить.  
(а у нас прайс такой, что конкуренты могут поменять шапку, реквизиты и выдавать за свой)  
Я думал, что существует какой-то другой способ...
скрыть/показать строки по кнопке (а их будет много)
 
снова по защите вопрос:    
для изменения надписи на кнопке-фигуре (макросом) пришлось разрешить изменение рисованных объектов, но размеры и присутствующие фото очень не хотелось бы позволять трогать - только изменение надписи (основного текста).  
 
можно ли обойти?
скрыть/показать строки по кнопке (а их будет много)
 
всё, отбой! нашёл нужную статью, там есть: http://www.planetaexcel.ru/tip.php?aid=281
скрыть/показать строки по кнопке (а их будет много)
 
спасибо!  
 
 
снова препядствие. на защищищённом листе скрытие/раскрытие не работает.  
(ни просто скрытых строк, ни группированнных по плюсику "+").  
возможно ли как-то обойти эту особенность?    
на ум приходит только снимать защиту сразу после нажатия на кнопку и защищать после произведённых действий...
скрыть/показать строки по кнопке (а их будет много)
 
В моём последнем примере если пытаться скрыть скрытые строки - возникала ошибка.  
Переделал с испольозванием IIf. Теперь макрос причёсан основателно :)  
 
---------  
Sub knopka()  
   Dim shapebut As Object, hid As Boolean  
   Set shapebut = ActiveSheet.Shapes(Application.Caller)  
   hid = Rows(shapebut.TopLeftCell.Row).ShowDetail  
   Rows(shapebut.TopLeftCell.Row).ShowDetail = IIf(hid = False, True, False)  
   shapebut.TextFrame.Characters.Text = IIf(hid = False, "Скрыть", "Показать")  
End Sub  
---------  
 
Да, а возможно ли скрыть левое поле группировки строк на листе? (где плюсики "+" находятся)?
скрыть/показать строки по кнопке (а их будет много)
 
Igor67, за ваш пример тоже спасибо, не знал про IIF :)  
только экран дёргается. а без затрагивания ScreenUpdating выглядит красивее, правда что будет на тяжёлых листах, с большим кол-вом позиций и их модификаций и необработанными фотками (юзеры даже не чешутся уменьшать размер прайса) - не ясно пока :)
скрыть/показать строки по кнопке (а их будет много)
 
ура! получилось!  
 
код работает! можно ли здесь ещё что-нибуь причесать?  
 
Юрий М, спасибо за подсказку! Ни разу бы не догадался! Правда, в вашем примере при копировании вручную ваших объектов (кружков) имя они сохраняли. А нарисовал новый прямоугольник и копировал его - имена менялись! Это от чего зависит, от версии Офиса? (у меня 2010).  
 
------------  
Sub knopka()  
  Const pok As String = "Показать", skr As String = "Скрыть"  
   Dim drawbut As Object, shapebut As Object  
   Set drawbut = ActiveSheet.DrawingObjects(Application.Caller)    'для переименовывания без Select  
   Set shapebut = ActiveSheet.Shapes(Application.Caller)           'для получения свойста .TopLeftCell  
   If drawbut.Text = pok Then  
       drawbut.Text = skr  
       Rows(shapebut.TopLeftCell.Row).ShowDetail = True  
   Else  
       drawbut.Text = pok  
       Rows(shapebut.TopLeftCell.Row).ShowDetail = False  
   End If  
   End Sub  
------------
скрыть/показать строки по кнопке (а их будет много)
 
спасибо за предложенный вариант, но с кнопками подходит, a с чекбоксами - нет.  
 
подскажите решение по вот такому моменту.    
я создал кнопку (вернее прямоугольник с повешенным на него макросом), она раскрывает/закрывает сгруппированные по плюсику ("+" слева) строки ниже себя.  
 
теперь нужно распространить её на все позиции в прайсе. я руками копирую "кнопку". свои свойства и привязанный макрос она сохраняет. проблема в том что я непосредственно указываю в макросе имя "кнопки". возможно ли в vba для чтения её свойства ".TopLeftCell" каким-либо образом не указывать имя её, а записать такую конструкцию, которая давала ссылку на на что-нибудь вроде "текущий выбранный шейп" или "шейп под курсором" или "активированный шейп"?  
 
буду очень благодарен!
активация любого листа ---> показ всегда сначала (скроллинг к началу)
 
спасибо, и как же сам не разглядел sheetactivate!?!  
 
получилось так:  
 
Private Sub Workbook_SheetActivate(ByVal Sh As Object)  
   ActiveWindow.SmallScroll (xlTop)  
End Sub
скрыть/показать строки по кнопке (а их будет много)
 
Прошу помощи в конкретном коде.  
В прайсе много позиций у которых опятьже много модификаций. Нужно сдеделать показ скрытых строк по кнопке, расположенной в ячейке описания товара (приложено в файле). группировать строки по "плюсику" будет человек ведущий прайс. он же будет копировать эту кнопку на вновь добавляющиеся позиции.    
 
Сейчас скрывать кнопка уже умеет, а на раскрытие - ошибка. Поскажите, что не так в коде?  
Да, знаю что можно узнать верхний левую ячейку, на которой расположен объект. Исходя из этого кнопка будет знать, какие строки ей скрывать/раскрывать (первая из скрываемых/раскрываемых строк - текущая + 1).    
 
А вот как будет обстоять дело с копированием прямоугольника-кнопки? он Будет получать новое имя или сохранять прежнее? в моём примере он сохранил имя "Прямоугольник 8" и при копировании макрос на нём же и остаётся висеть. Но разве объекты одинаковые имена могут иметь?
активация любого листа ---> показ всегда сначала (скроллинг к началу)
 
добрый день! имеется прайс из которого макросом генерятся другие.  
 
подскажите, есть ли возможность не прописывая для каждого листа процедурку на событие Activate сделать так, чтобы при активации (выборе) любого из листов он всегда отображался сначала (top)?  
 
или возможно ли автоматом сгенерировать такой код для всех (вернее для каждого из листов)?  
 
подойдёт и вариант чтобы макрос перед сохранением сам скроллировал все листы к началу (тогда хотя бы при открытии юзер будет видеть верх листа)?
Страницы: 1
Наверх