защита будет установлена в любом случае при открытии файла
Это если включены макросы Catand76, мы так и будем за Вас примеры придумывать? Прочитайте уже Правила форума и выполните п.3 оттуда
По поводу комментов [vba]
Код
Sub Sortir() Dim d As Range, d0 As Range 'd и d0 - ячейки On Error Resume Next 'пропуск ошибок Set d0 = Selection(1) 'd0 - первая ячейка выделенного диапазона на листе сb_ = Replace(Cells(1, d0.Column).Address(0, 0), 1, "") 'буква столбца d0 t_ = "Столбец ''" & сb_ & "'' сортируем по возрастанию?" 'формируем текст для сообщения t_ = t_ & vbLf & vbLf & "''Да'' - по возрастанию" t_ = t_ & vbLf & "''Нет'' - по убыванию" t_ = t_ & vbLf & "''Отмена'' - не сортировать" s_ = MsgBox(t_, vbYesNoCancel, "Сортировка по столбцу " & сb_) 'выводим сообщение If s_ < 6 Then Exit Sub 'если нажато что-то, ктоме Да и Нет - выход из макроса Application.ScreenUpdating = 0 'откл. обновление экрана or_ = s_ - 5 'по возрастанию или по убыванию. MSGBOX см https://msdn.microsoft.com/ru-ru....%3Dtrue Set d = d0.CurrentRegion 'd = все смежные с d0 ячейки Set d = d.Offset(1).Resize(d.Rows.Count - 1) 'd = все, кроме шапки With ActiveSheet.Sort.SortFields 'сортируем .Clear 'убрать то, что было (не обязательно, но если не написать, то могут быть косяки) .Add Key:=d0, Order:=or_ 'какой столбец и как сортируем With .Parent ' .SetRange d 'какой диапазон .Apply 'сам процесс сортировки End With End With d0.Select 'выделяем d0 Application.ScreenUpdating = 1 End Sub
защита будет установлена в любом случае при открытии файла
Это если включены макросы Catand76, мы так и будем за Вас примеры придумывать? Прочитайте уже Правила форума и выполните п.3 оттуда
По поводу комментов [vba]
Код
Sub Sortir() Dim d As Range, d0 As Range 'd и d0 - ячейки On Error Resume Next 'пропуск ошибок Set d0 = Selection(1) 'd0 - первая ячейка выделенного диапазона на листе сb_ = Replace(Cells(1, d0.Column).Address(0, 0), 1, "") 'буква столбца d0 t_ = "Столбец ''" & сb_ & "'' сортируем по возрастанию?" 'формируем текст для сообщения t_ = t_ & vbLf & vbLf & "''Да'' - по возрастанию" t_ = t_ & vbLf & "''Нет'' - по убыванию" t_ = t_ & vbLf & "''Отмена'' - не сортировать" s_ = MsgBox(t_, vbYesNoCancel, "Сортировка по столбцу " & сb_) 'выводим сообщение If s_ < 6 Then Exit Sub 'если нажато что-то, ктоме Да и Нет - выход из макроса Application.ScreenUpdating = 0 'откл. обновление экрана or_ = s_ - 5 'по возрастанию или по убыванию. MSGBOX см https://msdn.microsoft.com/ru-ru....%3Dtrue Set d = d0.CurrentRegion 'd = все смежные с d0 ячейки Set d = d.Offset(1).Resize(d.Rows.Count - 1) 'd = все, кроме шапки With ActiveSheet.Sort.SortFields 'сортируем .Clear 'убрать то, что было (не обязательно, но если не написать, то могут быть косяки) .Add Key:=d0, Order:=or_ 'какой столбец и как сортируем With .Parent ' .SetRange d 'какой диапазон .Apply 'сам процесс сортировки End With End With d0.Select 'выделяем d0 Application.ScreenUpdating = 1 End Sub
_Boroda_, Судя по третьей строчке, для сортировки данных надо ВЫДЕЛИТЬ ДИАПАЗОН.... Неприемлемо... Каждому объяснять как отсортировать (более 50 постоянных сотрудников и порядка 10 временных в месяц....) За помощь спасибо... Вы уж простите, что я к своим 45 годам не смог освоить VBA, просто когда я учился в институте у нас был класс 3 машины IBM 386 и около 10 "Электроника МК-90" и все чему мы могли научится - это написать на бейсике прогу для счета "А+В"... И для меня несколько сложновато сразу освоить неизвестный мне язык, но я стараюсь... Еще раз спасибо, за помощь. (Я ни в коем случае не жалуюсь! Нет так нет, буду смотреть дальше ролики на Ютубе и искать книги... Рано или позно я решу эту задачу, просто думал с Грамотными Ребятами будет несколько быстрее...)
_Boroda_, Судя по третьей строчке, для сортировки данных надо ВЫДЕЛИТЬ ДИАПАЗОН.... Неприемлемо... Каждому объяснять как отсортировать (более 50 постоянных сотрудников и порядка 10 временных в месяц....) За помощь спасибо... Вы уж простите, что я к своим 45 годам не смог освоить VBA, просто когда я учился в институте у нас был класс 3 машины IBM 386 и около 10 "Электроника МК-90" и все чему мы могли научится - это написать на бейсике прогу для счета "А+В"... И для меня несколько сложновато сразу освоить неизвестный мне язык, но я стараюсь... Еще раз спасибо, за помощь. (Я ни в коем случае не жалуюсь! Нет так нет, буду смотреть дальше ролики на Ютубе и искать книги... Рано или позно я решу эту задачу, просто думал с Грамотными Ребятами будет несколько быстрее...)Catand76
Catand76, не обязательно выделять весь столбец или всю таблицу достаточно выделить 1 ячейку в интересующем столбце [vba]
Код
Set d0 = Selection(1) 'd0 - первая ячейка выделенного диапазона на листе
[/vba] означает, что макросу в качестве параметра будет передан адрес левой верхней ячейки. и если пользователь выделит диапазон ячеек захватывающих несколько столбцов,, то все равно отсортирован будет только первый.
Catand76, не обязательно выделять весь столбец или всю таблицу достаточно выделить 1 ячейку в интересующем столбце [vba]
Код
Set d0 = Selection(1) 'd0 - первая ячейка выделенного диапазона на листе
[/vba] означает, что макросу в качестве параметра будет передан адрес левой верхней ячейки. и если пользователь выделит диапазон ячеек захватывающих несколько столбцов,, то все равно отсортирован будет только первый.boa
boa, Файл - то о чем я и говорил..... Нельзя давать выбор пользователям.... Кнопка должна четко отрабатывать в определенной таблице, определенном столбце и на определенные условия сортировки.... Как я и говорил макрос слишком заморочен.... Я лучше сделаю 10 кнопок в каждой таблице и соответственно 10 одинаковых макросов (с разницей №Таблицы и №столбца), но любому будет ясно, что кнопка сработает именно в таблице в которой находится и никак иначе.... Прошу прощения, если мыслю как-то извращенно.... (Умная таблица - это объект, с которым можно работать и обращаться по уникальному имени (ну если я правильно понял суть VBA), так же как и столбец имеет уникальное имя для таблицы, и с ним можно также работать. То есть мне разобраться с именами проще, чем разбирать команды определения диапазонов, смежных ячеек и т.д. и т.п., чтоб прикрутить макрос к своему файлу)
boa, Файл - то о чем я и говорил..... Нельзя давать выбор пользователям.... Кнопка должна четко отрабатывать в определенной таблице, определенном столбце и на определенные условия сортировки.... Как я и говорил макрос слишком заморочен.... Я лучше сделаю 10 кнопок в каждой таблице и соответственно 10 одинаковых макросов (с разницей №Таблицы и №столбца), но любому будет ясно, что кнопка сработает именно в таблице в которой находится и никак иначе.... Прошу прощения, если мыслю как-то извращенно.... (Умная таблица - это объект, с которым можно работать и обращаться по уникальному имени (ну если я правильно понял суть VBA), так же как и столбец имеет уникальное имя для таблицы, и с ним можно также работать. То есть мне разобраться с именами проще, чем разбирать команды определения диапазонов, смежных ячеек и т.д. и т.п., чтоб прикрутить макрос к своему файлу)Catand76
Век живи - век учись
Сообщение отредактировал Catand76 - Четверг, 05.07.2018, 10:35
Catand76, мы так и будем за Вас примеры придумывать? Прочитайте уже Правила форума и выполните п.3 оттуда
, но Вы по-прежнему упорствуете), поэтому я предположил, что сортировку нужно делать по любому столбцу по выбору пользователя. А как выбрать столбец для сортировки? Очень просто - ткнуть мышой в любую ячейку этого столбца (или несколько ячеек выделить - сортировать будет по столбцу, в котором находится левая верхняя, об этом я уже писал в сообщении №9) и нажать кнопку сортировки. И направление сортировки Вы тоже не указали сначала, поэтому пришлось делать msgbox для этого выбора. И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.
Catand76, мы так и будем за Вас примеры придумывать? Прочитайте уже Правила форума и выполните п.3 оттуда
, но Вы по-прежнему упорствуете), поэтому я предположил, что сортировку нужно делать по любому столбцу по выбору пользователя. А как выбрать столбец для сортировки? Очень просто - ткнуть мышой в любую ячейку этого столбца (или несколько ячеек выделить - сортировать будет по столбцу, в котором находится левая верхняя, об этом я уже писал в сообщении №9) и нажать кнопку сортировки. И направление сортировки Вы тоже не указали сначала, поэтому пришлось делать msgbox для этого выбора. И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.
И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.
Таблица1, Столбец[3] - это для примера, я думал неважно 1 или 3 столбец (условия применимы к любому столбцу таблицы1 (ну или Таблицы2) хоть к [3], хоть к [33]... - или я не прав?)
Пример как должно было бы работать (только на защищенном листе).... Но вылезла новая проблема "Умная" Таблица при защите листа НЕ РАСШИРЯЕТСЯ при добавлении данных снизу ...
И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.
Таблица1, Столбец[3] - это для примера, я думал неважно 1 или 3 столбец (условия применимы к любому столбцу таблицы1 (ну или Таблицы2) хоть к [3], хоть к [33]... - или я не прав?)
Пример как должно было бы работать (только на защищенном листе).... Но вылезла новая проблема "Умная" Таблица при защите листа НЕ РАСШИРЯЕТСЯ при добавлении данных снизу ...Catand76
Решил проблему - протягиванием умной таблицы на нужное количество строк, макрос "Сортировки" записал через "Запись макроса", поставил защиту и ВУАЛЯ все работает при блокировке листа. Всем спасибо! Именно наш диалог натолкнул на мысль попробовать "Запись".... А остальное дело техники... Еще раз СПАСИБО, что пытались понять проблему и помочь в ее решении....
Решил проблему - протягиванием умной таблицы на нужное количество строк, макрос "Сортировки" записал через "Запись макроса", поставил защиту и ВУАЛЯ все работает при блокировке листа. Всем спасибо! Именно наш диалог натолкнул на мысль попробовать "Запись".... А остальное дело техники... Еще раз СПАСИБО, что пытались понять проблему и помочь в ее решении....Catand76