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

Страницы: 1
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Цитата
kuklp написал:
Кто такой нуб? Ничего не напоминает?
В том то и дело что на этом форуме как будто в курилке оффтопят вместо того чтобы советы давать.
Я не требовал помощи, но если уж решил помочь то хотя бы говори по делу и прочитай изначальный первый пост а не из середины где-то.
Че я совсем д.......б чтобы не получилось защиту установить? Ее хоть в книгу хоть в лист пиши, написал Protect "1111" вот тебе и защита, че тут сложного? А по сути так никто за целую страницу ничего и не ответил!
Изменено: Excel_Noob - 28.04.2016 15:32:34
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Вообщем мне уже надоело разводить базар, тут помощи не дождешься! На простейший вопрос приходиться бадягу размусоливать на 100 тысяч сообщений и в итоге никто ничего не подскажет, сам скорей найдешь решение чем тут.
The_Prist, возьми, скачай пример отсюда пост #7 и убедись что нихера НЕ РАБОТАЕТ МАКРОС, а ЗАЩИТА ВКЛЮЧАЕТСЯ!
Можешь даже не отвечать почему не работает, найду решение сам!

Всего наилучшего! Я Покидаю Вас! Можете меня банить мне побарабану!
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Цитата
The_Prist написал:
Тыкаю:  #4    -   27 Апр 2016 15:58:39
Это был ответ а не вопрос, когда мне начали втыкать про включение защиты. ИЗНАЧАЛЬНО (В МОЕМ ПЕРВОМ ПОСТЕ) ГДЕ написано что у меня не включается защита?
Цитата
Excel_Noob написал:
Добрый день!
Решил установить защиту на лист для юзера, но чтобы макрос не блокировался! понял что нужно использовать UserInterfaceOnly:=True.
Но вот беда, у меня почему то это абсолютно не помогает, что пиши что не пиши все равно макрос тоже перестает работать.

этот юзеринтерфейс распространяется не на все функции как я понял? как минимум у меня не работает изменение "проверки данных" - выключаешь защиту все ок, запускаешь заного файл, не пашет.
Код ? 12345678Private Sub Worksheet_Activate()Protect Password:="1111", UserInterfaceOnly:=TrueEnd Sub ....тут всякий код........ вот на этом месте (только когда с защитой) выдает ошибку - Validation.Modify Type:=xlValidateInputOnlyКто сталкивался подскажите плиз! Пока остальные функции не проверял, решил сразу написать, может и смысла проверять нету, если это не будет работать.
Изменено: Excel_Noob - 28.04.2016 15:18:39
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Оффтоп
Цитата
Юрий М написал:
Вам пытаются помочь
Конечно извиняюсь, я очень и очень благодарен тому, что существую такие форумы, и тем людям что готовы придти на помощь! Но блин, в каждой теме мне приходится разжевывать простейший вопрос, когда вполне ясно его транслируешь изначально, а отвечают на совершенно другое.
Ну вот где я тут указал что у меня не включается и не работает защита листа? Ткните меня пальцем в это.
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Вот прикреплю пример, сами убедитесь!

Инструкция к вложению
Код
1 - Открываем файл и пробуем кликнуть на любую ячейку! (Макрос выдаст ошибку)
2 - Отклчаем защиту листа (пароль 1111)
3 - Заново пробуем кликнуть любую ячейку
4 - Вуаля, в этой ячейке сразу появляется выпадающий список!
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Цитата
The_Prist написал:
чтобы при открытии эта защита работала

После 5ой темы, сложилось такое впечатление, что вопросы вообще не читают, так поверхностно название темы глянут и ляпают ответы лишь бы что ляпнуть.
Защита как раз-таки включается нормально, а вот макрос работать перестает!

Цитата
Excel_Noob написал:
UserInterfaceOnly:=True.
что пиши что не пиши все равно макрос тоже перестает работать.

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

Открываешь файл => Включается защита листа => Дальше макрос отказывается работать => Выключаешь защиту листа => Макрос работает!
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Цитата

Если выполнить ниже приведенную строчку кода, то пользователю невозможно будет изменить данные на листе(кроме тех, которые Вы сами разрешите), однако код VBA(макрос) сможет преспокойно вносить любые изменения, не снимая защиту.
Sub Protect_for_User_Non_for_VBA()
   ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True
End Sub
Вот только почему-то у меня на отрез отказывается выполняться. эксель 2007.
Изменено: Excel_Noob - 27.04.2016 16:12:59
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
я по идее оттуда и делал, так же читал на этом форме http://www.planetaexcel.ru/techniques/5/64/
[ Закрыто] Защитить лист, но разрешить работать макросу (UserInterfaceOnly = True)
 
Добрый день!
Решил установить защиту на лист для юзера, но чтобы макрос не блокировался! понял что нужно использовать UserInterfaceOnly:=True.
Но вот беда, у меня почему то это абсолютно не помогает, что пиши что не пиши все равно макрос тоже перестает работать.

этот юзеринтерфейс распространяется не на все функции как я понял? как минимум у меня не работает изменение "проверки данных"  - выключаешь защиту все ок, запускаешь заного файл, не пашет.
Код
Private Sub Worksheet_Activate()
Protect Password:="1111", UserInterfaceOnly:=True
End Sub

....
тут всякий код...
.....
 вот на этом месте (только когда с защитой) выдает ошибку - Validation.Modify Type:=xlValidateInputOnly
Кто сталкивался подскажите плиз! Пока остальные функции не проверял, решил сразу написать, может и смысла проверять нету, если это не будет работать.
Изменено: Excel_Noob - 27.04.2016 14:11:36
Автоподстановка даты в ячейку, при условии что она пустая
 
Цитата
Sanja написал:
Нет предела совершенству  . Обычно "маловато будет...", а тут наоборот, "великовато"
Да, совершенству кода предела не бывает) и для кода маловато никогда не будет, чем короче тем быстрее выполняется (в большинстве случаев)
Изменено: Excel_Noob - 26.04.2016 16:33:11
Сравнение значения каждой строки одной таблицы со значениями всех строк второй таблицы.
 
Цитата
kuklp написал:
Цитата Sanja  написал:
Отписываться в своих темах автор считает зазорным.Вы не собираетесь на это реагировать? ИМХО серьезный упрек.
Ну что поделаешь, если у меня данные разрослись и теперь ищу где сократить код, там мне человек сказал что короче уже некуда. У меня время горит, и решения там я пока не нашел, отпишусь во всех темах по оптимизации своего кода!
Сравнение значения каждой строки одной таблицы со значениями всех строк второй таблицы.
 
Упростим пример!
Код
      For x = 1 To Range("диапазон_1").Rows.Count
             For y = 1 To Range("диапазон_2").Rows.Count
                If Range("диапазон_1").Cells(x, 1) = Range("диапазон_2").Cells(y, 1) Then
'                  ....... если строка найдена во втором диапазоне то выполняется какой-то код..........
                     Exit For
                End If
             Next y
             If y = Range("диапазон_2").Rows.Count + 1 Then
'                  .......если строка НЕ найдена во втором диапазоне то выполняется какой-то другой код..........
             End If
       Next x
'        .......Дальше выполняется еще код в зависимости от результатов......................
Вопрос таков, можно ли сократить весь этот двойной перебор, ну незнаю с помощью поиска функий сравнения строк или что в таком духе?
Очень прошу, если кто знает, пожалуйста помогите)
Изменено: Excel_Noob - 26.04.2016 16:30:47
Сравнение значения каждой строки одной таблицы со значениями всех строк второй таблицы.
 
Цитата
kuklp написал: Милион тыков в кнопку Ок? Рука не устанет?
Это просто в примере окошко, чтобы было понятно что что и где ищется 8)

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

Цитата
Sanja написал: Заносите данные в массивы (коллекции) и их перебирайте
Спасибо, подумаю в этом направлении.
Сравнение значения каждой строки одной таблицы со значениями всех строк второй таблицы.
 
Всем хай!
Помогите решить проблему, впринципе все работает сейчас, но так как данных набралось уже прилично, мой код начинает подторомаживать уже.

Есть 2 таблицы. Скрипт проверяет каждую строку столбца в первой таблице  - на наличие такого же значения в столбце второй таблицы
Вот мой код, также приложил файл-пример.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Target.Address = "$F$4" Then
'x - строки таблицы 1
'y - строки таблицы 2
      For x = 1 To Range("Таблица1").Rows.Count
             For y = 1 To Range("Таблица2").Rows.Count
                If Range("Таблица1").Cells(x, 1) = Range("Таблица2").Cells(y, 1) Then
                     MsgBox "Строка " & Range("Таблица1").Cells(x, 1) & "  - ДА"
                     Exit For
                End If
             Next y
             If y = Range("Таблица2").Rows.Count + 1 Then
                MsgBox "Строка " & Range("Таблица1").Cells(x, 1) & "  - НЕТ"
             End If
      Next x
  End If

End Sub
Изменено: Excel_Noob - 26.04.2016 15:47:01 (Загрузил пример)
Автоподстановка даты в ячейку, при условии что она пустая
 
ИМХО что в этом вопросе может быть не понятно?
Цитата
Excel_Noob написал:
Как можно еще упростить подстановку даты в предыдущюю ячейку если она пуста, и не трогать если она не пуста?
1 - Поставить дату в предыдущюю ячейку есил она пуста
2 - Не трогать ячейку если она не пуста

Зачем нужно в пример запихивать условие диапазона? Диапазон ячеек к вопросу вообще никаким боком не отноститься ведь:))
Автоподстановка даты в ячейку, при условии что она пустая
 
Цитата
Sanja написал:
В самом начале процедуры пропишите диапазон, для которого этот обработчик нужен
Да у меня итак там все прописано, говорю же здесь для примера написал просто таргет (типа если таргетируем что-то, то выполняется код)
Если так до сих пор непонятно, ловите Full код, зачем такой код в файл прикреплять то?
Код
If Not Intersect(Target, Range("...")) Is Nothing Then
  If IsEmpty(Target(1, 0)) Then Target(1, 0) = Date ' вот это хотелось бы написать короче
...
...
...
End If
Автоподстановка даты в ячейку, при условии что она пустая
 
Цитата
kuklp написал: Чем длинней?
Copy-Paste и забыл сразу стереть во втором варианте:)))
И сразу исправил еще даже до того как вы написали!  
Автоподстановка даты в ячейку, при условии что она пустая
 
Цитата
Sanja написал: Не совсем понятно чего хотите
Сократить то что идет после первого Then:
Код
это - If IsEmpty(Target(1, 0)) Then Target(1, 0) = Date
либо это - Target(1, 0) = IIf(IsEmpty(Target(1, 0)), Date, Application.Undo)
Изменено: Excel_Noob - 24.04.2016 17:44:45
Автоподстановка даты в ячейку, при условии что она пустая
 
Цитата
Sanja написал: зачем первая проверка  If Target Then....?
Это условие в какой ячейке происходит изменение, не по всему листу же дату ставить?
Давай так тапишу тогда:
Код
If Target.Column = 2 Then
If IsEmpty(Target(1, 0)) Then Target(1, 0) = Date
End If
Но в любом случае Target.Offset(-1, 0) длинее чем Target(1, 0)  
Изменено: Excel_Noob - 24.04.2016 17:41:08
Автоподстановка даты в ячейку, при условии что она пустая
 
Привет!
Не ругайтесь за простой вопросик, сегодня уже просто вечер у нас, и поэтому голова забита совсем)
Как можно еще упростить подстановку даты в предыдущюю ячейку если она пуста, и не трогать если она не пуста?

Вот мои варианты, ничего проще в голову не лезет, но почему то кажется что они какие-то слишком уж длинные:
Код
1 - If Target Then If IsEmpty(Target(1, 0)) Then Target(1, 0) = Date
2 - If Target Then Target(1, 0) = IIf(IsEmpty(Target(1, 0)), Date, Application.Undo)
Событие при изменении внутри ячейки, до нажатия на ВВОД
 
Цитата
Ts.Soft написал: например ограничить ввод только цифр
С ограничениями это был грубый пример. Выше описал и приложил пример что именно меня интересует, тут ограничения не помогут)
Событие при изменении внутри ячейки, до нажатия на ВВОД
 
Вообще решил чтобы до конца понятней было что мне надо сделать и прикрепить пример!

Эту тему много раз обсуждали, но ничего хорошего я найти так и не смог,

Выпадающий список на основе введенных данных в ячейку, т.е. по мере ввода список сокращается до содержащихся в ячейке символов.
Находил какие то надстройки и еще всякую прочую ерунду, но хочу это сделать стандартными методами.

Самый лучший вариант что нашел был на другом форме со ссылкой на Ваш комментарий из этого форума форум - http://www.excelworld.ru/forum/2-3268-1
Там вот такой вариант:
Цитата
Попробуйте эту "корявую реализацию" поиска в списке. Пользователю необходимо совершить 3 клика по выпадающему списку:
- Вводим одну или несколько начальных букв в ячейку "D2"(регистр значения не имеет)
- 1-й клик.Раскрывается список;
- 2-й клик.Подставляется первое ,идущее по алфавиту слово;
- 3-й клик.Раскрывается список на подставленном слове.Выбираем нужное.
Это конечно совсем не то что хотелось ,но хоть что-то...
Чтобы сделать "красиво" не хватает событий для Worksheet,срабатывающих при вводе значений в ячейку..

Делать кучу кликов по списку это вообще никуда не годиться, поэтому я решил реализовать свое решение с нуля, вот что у меня получилось.
Осталось сделать только чтобы это все происходило без последнего действия принятия изменений в ячейке)))
Изменено: Excel_Noob - 24.04.2016 13:03:42
Событие при изменении внутри ячейки, до нажатия на ВВОД
 
Да, либо воркченч по изменению, либо воркселект по выбору, это я знаю. Тоже думаю что это сделать нельзя, но вот решил на обсуждение профи написать, может им интересно будет над такой сложной задачей голову поломать)
Событие при изменении внутри ячейки, до нажатия на ВВОД
 
Всем Доброго дня!
У меня вот такой вопрос появился:
А можно ли макросом сделать чтото наподобие екселевской стоковой "проверки данных", когда вводишь несоответствующее условию значение, то выдает ошибку, только чтобы это происходило еще до нажатия на ВВОД

К примеру какая-то ячейка , если в ней мы начинаем вводить определенный символ, то выполняется какое-нибудь действие, и так далее при вводе последующих символов.
Кто что думает по этому поводу?
Зависимый выпадающий список для несортированных данных
 
Всем привет!
Перечитал кучу страниц гугла, но так и не нашел как можно сделать чтобы из двух неотсортированных столбцов можно было сделать зависимый выпадающий список.

Варианта нашел 2:
1 либо сортируем его, и делаем как вот тут во втором примере - http://www.planetaexcel.ru/techniques/1/38/
2 делаем многоразовый ВПР http://www.planetaexcel.ru/techniques/2/81/ и уже списком ссылаемся на столбец с массивом.

Но не то не то к сожалению мне не подходит.

Подскажите, как можно сделать чтото наподобие многоразового ВПР, только чтобы эти данные попадали сразу выпадающий список, и не записывались на лист?
Страницы: 1
Наверх