kuklp написал: Кто такой нуб? Ничего не напоминает?
В том то и дело что на этом форуме как будто в курилке оффтопят вместо того чтобы советы давать. Я не требовал помощи, но если уж решил помочь то хотя бы говори по делу и прочитай изначальный первый пост а не из середины где-то. Че я совсем д.......б чтобы не получилось защиту установить? Ее хоть в книгу хоть в лист пиши, написал Protect "1111" вот тебе и защита, че тут сложного? А по сути так никто за целую страницу ничего и не ответил!
Вообщем мне уже надоело разводить базар, тут помощи не дождешься! На простейший вопрос приходиться бадягу размусоливать на 100 тысяч сообщений и в итоге никто ничего не подскажет, сам скорей найдешь решение чем тут. The_Prist, возьми, скачай пример отсюда пост #7 и убедись что нихера НЕ РАБОТАЕТ МАКРОС, а ЗАЩИТА ВКЛЮЧАЕТСЯ! Можешь даже не отвечать почему не работает, найду решение сам!
Всего наилучшего! Я Покидаю Вас! Можете меня банить мне побарабану!
Это был ответ а не вопрос, когда мне начали втыкать про включение защиты. ИЗНАЧАЛЬНО (В МОЕМ ПЕРВОМ ПОСТЕ) ГДЕ написано что у меня не включается защита?
Цитата
Excel_Noob написал: Добрый день! Решил установить защиту на лист для юзера, но чтобы макрос не блокировался! понял что нужно использовать UserInterfaceOnly:=True. Но вот беда, у меня почему то это абсолютно не помогает, что пиши что не пиши все равно макрос тоже перестает работать.
этот юзеринтерфейс распространяется не на все функции как я понял? как минимум у меня не работает изменение "проверки данных" - выключаешь защиту все ок, запускаешь заного файл, не пашет. Код ? 12345678Private Sub Worksheet_Activate()Protect Password:="1111", UserInterfaceOnly:=TrueEnd Sub ....тут всякий код........ вот на этом месте (только когда с защитой) выдает ошибку - Validation.Modify Type:=xlValidateInputOnlyКто сталкивался подскажите плиз! Пока остальные функции не проверял, решил сразу написать, может и смысла проверять нету, если это не будет работать.
Конечно извиняюсь, я очень и очень благодарен тому, что существую такие форумы, и тем людям что готовы придти на помощь! Но блин, в каждой теме мне приходится разжевывать простейший вопрос, когда вполне ясно его транслируешь изначально, а отвечают на совершенно другое. Ну вот где я тут указал что у меня не включается и не работает защита листа? Ткните меня пальцем в это.
The_Prist написал: чтобы при открытии эта защита работала
После 5ой темы, сложилось такое впечатление, что вопросы вообще не читают, так поверхностно название темы глянут и ляпают ответы лишь бы что ляпнуть. Защита как раз-таки включается нормально, а вот макрос работать перестает!
Цитата
Excel_Noob написал: UserInterfaceOnly:=True. что пиши что не пиши все равно макрос тоже перестает работать.
у меня не работает изменение "проверки данных" - выключаешь защиту все ок, запускаешь заного файл, не пашет.
Открываешь файл => Включается защита листа => Дальше макрос отказывается работать => Выключаешь защиту листа => Макрос работает!
Если выполнить ниже приведенную строчку кода, то пользователю невозможно будет изменить данные на листе(кроме тех, которые Вы сами разрешите), однако код VBA(макрос) сможет преспокойно вносить любые изменения, не снимая защиту. Sub Protect_for_User_Non_for_VBA() ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True End Sub
Вот только почему-то у меня на отрез отказывается выполняться. эксель 2007.
Добрый день! Решил установить защиту на лист для юзера, но чтобы макрос не блокировался! понял что нужно использовать UserInterfaceOnly:=True. Но вот беда, у меня почему то это абсолютно не помогает, что пиши что не пиши все равно макрос тоже перестает работать.
этот юзеринтерфейс распространяется не на все функции как я понял? как минимум у меня не работает изменение "проверки данных" - выключаешь защиту все ок, запускаешь заного файл, не пашет.
Код
Private Sub Worksheet_Activate()
Protect Password:="1111", UserInterfaceOnly:=True
End Sub
....
тут всякий код...
.....
вот на этом месте (только когда с защитой) выдает ошибку - Validation.Modify Type:=xlValidateInputOnly
Кто сталкивался подскажите плиз! Пока остальные функции не проверял, решил сразу написать, может и смысла проверять нету, если это не будет работать.
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
' .......Дальше выполняется еще код в зависимости от результатов......................
Вопрос таков, можно ли сократить весь этот двойной перебор, ну незнаю с помощью поиска функий сравнения строк или что в таком духе? Очень прошу, если кто знает, пожалуйста помогите)
kuklp написал: Милион тыков в кнопку Ок? Рука не устанет?
Это просто в примере окошко, чтобы было понятно что что и где ищется
Вместо мессечбоксов у меня выполняется определенный код, что там выполняется, абсолютно к вопросу отношения не имеет никакого, поэтому зачем раздувать код в примере.
Цитата
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
Sanja написал: В самом начале процедуры пропишите диапазон, для которого этот обработчик нужен
Да у меня итак там все прописано, говорю же здесь для примера написал просто таргет (типа если таргетируем что-то, то выполняется код) Если так до сих пор непонятно, ловите Full код, зачем такой код в файл прикреплять то?
Код
If Not Intersect(Target, Range("...")) Is Nothing Then
If IsEmpty(Target(1, 0)) Then Target(1, 0) = Date ' вот это хотелось бы написать короче
...
...
...
End If
Привет! Не ругайтесь за простой вопросик, сегодня уже просто вечер у нас, и поэтому голова забита совсем) Как можно еще упростить подстановку даты в предыдущюю ячейку если она пуста, и не трогать если она не пуста?
Вот мои варианты, ничего проще в голову не лезет, но почему то кажется что они какие-то слишком уж длинные:
Код
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)
Вообще решил чтобы до конца понятней было что мне надо сделать и прикрепить пример!
Эту тему много раз обсуждали, но ничего хорошего я найти так и не смог,
Выпадающий список на основе введенных данных в ячейку, т.е. по мере ввода список сокращается до содержащихся в ячейке символов. Находил какие то надстройки и еще всякую прочую ерунду, но хочу это сделать стандартными методами.
Самый лучший вариант что нашел был на другом форме со ссылкой на Ваш комментарий из этого форума форум - http://www.excelworld.ru/forum/2-3268-1 Там вот такой вариант:
Цитата
Попробуйте эту "корявую реализацию" поиска в списке. Пользователю необходимо совершить 3 клика по выпадающему списку: - Вводим одну или несколько начальных букв в ячейку "D2"(регистр значения не имеет) - 1-й клик.Раскрывается список; - 2-й клик.Подставляется первое ,идущее по алфавиту слово; - 3-й клик.Раскрывается список на подставленном слове.Выбираем нужное. Это конечно совсем не то что хотелось ,но хоть что-то... Чтобы сделать "красиво" не хватает событий для Worksheet,срабатывающих при вводе значений в ячейку..
Делать кучу кликов по списку это вообще никуда не годиться, поэтому я решил реализовать свое решение с нуля, вот что у меня получилось. Осталось сделать только чтобы это все происходило без последнего действия принятия изменений в ячейке)))
Да, либо воркченч по изменению, либо воркселект по выбору, это я знаю. Тоже думаю что это сделать нельзя, но вот решил на обсуждение профи написать, может им интересно будет над такой сложной задачей голову поломать)
Всем Доброго дня! У меня вот такой вопрос появился: А можно ли макросом сделать чтото наподобие екселевской стоковой "проверки данных", когда вводишь несоответствующее условию значение, то выдает ошибку, только чтобы это происходило еще до нажатия на ВВОД
К примеру какая-то ячейка , если в ней мы начинаем вводить определенный символ, то выполняется какое-нибудь действие, и так далее при вводе последующих символов. Кто что думает по этому поводу?
Всем привет! Перечитал кучу страниц гугла, но так и не нашел как можно сделать чтобы из двух неотсортированных столбцов можно было сделать зависимый выпадающий список.