Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сортировка заблокированных ячеек - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Сортировка заблокированных ячеек
_Boroda_ Дата: Четверг, 05.07.2018, 09:34 | Сообщение № 21
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация: 6502 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
я имел ввиду сеанс открытой книги

Тогда странно, я ведь писал
перегрузил Excel
. а не переоткрыл книгу

защита будет установлена в любом случае при открытии файла
Это если включены макросы 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
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
я имел ввиду сеанс открытой книги

Тогда странно, я ведь писал
перегрузил Excel
. а не переоткрыл книгу

защита будет установлена в любом случае при открытии файла
Это если включены макросы 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
[/vba]

Автор - _Boroda_
Дата добавления - 05.07.2018 в 09:34
Catand76 Дата: Четверг, 05.07.2018, 09:46 | Сообщение № 22
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
boa, Если защиту не отключить сортировка не работает...


Век живи - век учись
 
Ответить
Сообщениеboa, Если защиту не отключить сортировка не работает...

Автор - Catand76
Дата добавления - 05.07.2018 в 09:46
boa Дата: Четверг, 05.07.2018, 09:52 | Сообщение № 23
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Catand76,
вы используете последний файл ?
К сообщению приложен файл: 579175-1-3.xlsm(19.6 Kb)


 
Ответить
СообщениеCatand76,
вы используете последний файл ?
К сообщению приложен файл: 579175-1-3.xlsm(19.6 Kb)

Автор - boa
Дата добавления - 05.07.2018 в 09:52
Catand76 Дата: Четверг, 05.07.2018, 10:02 | Сообщение № 24
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Судя по третьей строчке, для сортировки данных надо ВЫДЕЛИТЬ ДИАПАЗОН....
Неприемлемо... Каждому объяснять как отсортировать (более 50 постоянных сотрудников и порядка 10 временных в месяц....)
За помощь спасибо... Вы уж простите, что я к своим 45 годам не смог освоить VBA, просто когда я учился в институте у нас был класс 3 машины IBM 386 и около 10 "Электроника МК-90" и все чему мы могли научится - это написать на бейсике прогу для счета "А+В"... И для меня несколько сложновато сразу освоить неизвестный мне язык, но я стараюсь... Еще раз спасибо, за помощь.
(Я ни в коем случае не жалуюсь! Нет так нет, буду смотреть дальше ролики на Ютубе и искать книги... Рано или позно я решу эту задачу, просто думал с Грамотными Ребятами будет несколько быстрее...)


Век живи - век учись
 
Ответить
Сообщение_Boroda_, Судя по третьей строчке, для сортировки данных надо ВЫДЕЛИТЬ ДИАПАЗОН....
Неприемлемо... Каждому объяснять как отсортировать (более 50 постоянных сотрудников и порядка 10 временных в месяц....)
За помощь спасибо... Вы уж простите, что я к своим 45 годам не смог освоить VBA, просто когда я учился в институте у нас был класс 3 машины IBM 386 и около 10 "Электроника МК-90" и все чему мы могли научится - это написать на бейсике прогу для счета "А+В"... И для меня несколько сложновато сразу освоить неизвестный мне язык, но я стараюсь... Еще раз спасибо, за помощь.
(Я ни в коем случае не жалуюсь! Нет так нет, буду смотреть дальше ролики на Ютубе и искать книги... Рано или позно я решу эту задачу, просто думал с Грамотными Ребятами будет несколько быстрее...)

Автор - Catand76
Дата добавления - 05.07.2018 в 10:02
boa Дата: Четверг, 05.07.2018, 10:17 | Сообщение № 25
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Catand76,
не обязательно выделять весь столбец или всю таблицу
достаточно выделить 1 ячейку в интересующем столбце
[vba]
Код
Set d0 = Selection(1) 'd0 - первая ячейка выделенного диапазона на листе
[/vba]
означает, что макросу в качестве параметра будет передан адрес левой верхней ячейки.
и если пользователь выделит диапазон ячеек захватывающих несколько столбцов,, то все равно отсортирован будет только первый.


 
Ответить
СообщениеCatand76,
не обязательно выделять весь столбец или всю таблицу
достаточно выделить 1 ячейку в интересующем столбце
[vba]
Код
Set d0 = Selection(1) 'd0 - первая ячейка выделенного диапазона на листе
[/vba]
означает, что макросу в качестве параметра будет передан адрес левой верхней ячейки.
и если пользователь выделит диапазон ячеек захватывающих несколько столбцов,, то все равно отсортирован будет только первый.

Автор - boa
Дата добавления - 05.07.2018 в 10:17
Catand76 Дата: Четверг, 05.07.2018, 10:24 | Сообщение № 26
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
boa, Файл - то о чем я и говорил..... Нельзя давать выбор пользователям....
Кнопка должна четко отрабатывать в определенной таблице, определенном столбце и на определенные условия сортировки.... Как я и говорил макрос слишком заморочен....
Я лучше сделаю 10 кнопок в каждой таблице и соответственно 10 одинаковых макросов (с разницей №Таблицы и №столбца), но любому будет ясно, что кнопка сработает именно в таблице в которой находится и никак иначе....
Прошу прощения, если мыслю как-то извращенно....
(Умная таблица - это объект, с которым можно работать и обращаться по уникальному имени (ну если я правильно понял суть VBA), так же как и столбец имеет уникальное имя для таблицы, и с ним можно также работать. То есть мне разобраться с именами проще, чем разбирать команды определения диапазонов, смежных ячеек и т.д. и т.п., чтоб прикрутить макрос к своему файлу)


Век живи - век учись

Сообщение отредактировал Catand76 - Четверг, 05.07.2018, 10:35
 
Ответить
Сообщениеboa, Файл - то о чем я и говорил..... Нельзя давать выбор пользователям....
Кнопка должна четко отрабатывать в определенной таблице, определенном столбце и на определенные условия сортировки.... Как я и говорил макрос слишком заморочен....
Я лучше сделаю 10 кнопок в каждой таблице и соответственно 10 одинаковых макросов (с разницей №Таблицы и №столбца), но любому будет ясно, что кнопка сработает именно в таблице в которой находится и никак иначе....
Прошу прощения, если мыслю как-то извращенно....
(Умная таблица - это объект, с которым можно работать и обращаться по уникальному имени (ну если я правильно понял суть VBA), так же как и столбец имеет уникальное имя для таблицы, и с ним можно также работать. То есть мне разобраться с именами проще, чем разбирать команды определения диапазонов, смежных ячеек и т.д. и т.п., чтоб прикрутить макрос к своему файлу)

Автор - Catand76
Дата добавления - 05.07.2018 в 10:24
_Boroda_ Дата: Четверг, 05.07.2018, 10:33 | Сообщение № 27
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация: 6502 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
когда я учился в институте у нас был класс 3 машины IBM 386 и около 10 "Электроника МК-90"
Примерно также, как и у нас. Это совершенно неважно. А сразу освоить и не получится, это совершенно нормально

Судя по третьей строчке, для сортировки данных надо ВЫДЕЛИТЬ ДИАПАЗОН
Не совсем так. Вы же файл не приложили (о чем я и написал:
Catand76, мы так и будем за Вас примеры придумывать? Прочитайте уже Правила форума и выполните п.3 оттуда
, но Вы по-прежнему упорствуете), поэтому я предположил, что сортировку нужно делать по любому столбцу по выбору пользователя. А как выбрать столбец для сортировки? Очень просто - ткнуть мышой в любую ячейку этого столбца (или несколько ячеек выделить - сортировать будет по столбцу, в котором находится левая верхняя, об этом я уже писал в сообщении №9) и нажать кнопку сортировки. И направление сортировки Вы тоже не указали сначала, поэтому пришлось делать msgbox для этого выбора. И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.
просто думал с Грамотными Ребятами будет несколько быстрее
Именно так. При нормальной постановке задачи, грамотном примере и подробном описании хотелок. Сравните
Кнопка должна четко отрабатывать в определенной таблице, определенном столбце и на определенные условия сортировки
из последнего поста и
Необходимо сортировать данные ТАБЛИЦЫ
из первого
Как я и говорил макрос слишком заморочен
Извините, я больше так не буду


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
когда я учился в институте у нас был класс 3 машины IBM 386 и около 10 "Электроника МК-90"
Примерно также, как и у нас. Это совершенно неважно. А сразу освоить и не получится, это совершенно нормально

Судя по третьей строчке, для сортировки данных надо ВЫДЕЛИТЬ ДИАПАЗОН
Не совсем так. Вы же файл не приложили (о чем я и написал:
Catand76, мы так и будем за Вас примеры придумывать? Прочитайте уже Правила форума и выполните п.3 оттуда
, но Вы по-прежнему упорствуете), поэтому я предположил, что сортировку нужно делать по любому столбцу по выбору пользователя. А как выбрать столбец для сортировки? Очень просто - ткнуть мышой в любую ячейку этого столбца (или несколько ячеек выделить - сортировать будет по столбцу, в котором находится левая верхняя, об этом я уже писал в сообщении №9) и нажать кнопку сортировки. И направление сортировки Вы тоже не указали сначала, поэтому пришлось делать msgbox для этого выбора. И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.
просто думал с Грамотными Ребятами будет несколько быстрее
Именно так. При нормальной постановке задачи, грамотном примере и подробном описании хотелок. Сравните
Кнопка должна четко отрабатывать в определенной таблице, определенном столбце и на определенные условия сортировки
из последнего поста и
Необходимо сортировать данные ТАБЛИЦЫ
из первого
Как я и говорил макрос слишком заморочен
Извините, я больше так не буду

Автор - _Boroda_
Дата добавления - 05.07.2018 в 10:33
Catand76 Дата: Четверг, 05.07.2018, 10:42 | Сообщение № 28
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.

Таблица1, Столбец[3] - это для примера, я думал неважно 1 или 3 столбец (условия применимы к любому столбцу таблицы1 (ну или Таблицы2) хоть к [3], хоть к [33]... - или я не прав?)

Пример как должно было бы работать (только на защищенном листе)....
Но вылезла новая проблема "Умная" Таблица при защите листа НЕ РАСШИРЯЕТСЯ при добавлении данных снизу ...
К сообщению приложен файл: 579175-1-4.xlsm (29.0 Kb)


Век живи - век учись

Сообщение отредактировал Catand76 - Четверг, 05.07.2018, 12:10
 
Ответить
Сообщение
И только более, чем через сутки, вдруг выясняется, что сортировать нужно столбец 3 по возрастанию, да еще и что там у Вас умная таблица.

Таблица1, Столбец[3] - это для примера, я думал неважно 1 или 3 столбец (условия применимы к любому столбцу таблицы1 (ну или Таблицы2) хоть к [3], хоть к [33]... - или я не прав?)

Пример как должно было бы работать (только на защищенном листе)....
Но вылезла новая проблема "Умная" Таблица при защите листа НЕ РАСШИРЯЕТСЯ при добавлении данных снизу ...

Автор - Catand76
Дата добавления - 05.07.2018 в 10:42
Catand76 Дата: Четверг, 05.07.2018, 12:49 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Решил проблему - протягиванием умной таблицы на нужное количество строк, макрос "Сортировки" записал через "Запись макроса", поставил защиту и ВУАЛЯ все работает при блокировке листа.
Всем спасибо! Именно наш диалог натолкнул на мысль попробовать "Запись".... А остальное дело техники...
Еще раз СПАСИБО, что пытались понять проблему и помочь в ее решении....
К сообщению приложен файл: 579175-1-5.xlsm (31.1 Kb)


Век живи - век учись

Сообщение отредактировал Catand76 - Четверг, 05.07.2018, 12:51
 
Ответить
СообщениеРешил проблему - протягиванием умной таблицы на нужное количество строк, макрос "Сортировки" записал через "Запись макроса", поставил защиту и ВУАЛЯ все работает при блокировке листа.
Всем спасибо! Именно наш диалог натолкнул на мысль попробовать "Запись".... А остальное дело техники...
Еще раз СПАСИБО, что пытались понять проблему и помочь в ее решении....

Автор - Catand76
Дата добавления - 05.07.2018 в 12:49
boa Дата: Четверг, 05.07.2018, 12:54 | Сообщение № 30
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Но вылезла новая проблема "Умная" Таблица при защите листа НЕ РАСШИРЯЕТСЯ при добавлении данных снизу

что вам мешает предусмотрительно добавить строки без данных?


 
Ответить
Сообщение
Но вылезла новая проблема "Умная" Таблица при защите листа НЕ РАСШИРЯЕТСЯ при добавлении данных снизу

что вам мешает предусмотрительно добавить строки без данных?

Автор - boa
Дата добавления - 05.07.2018 в 12:54
boa Дата: Четверг, 05.07.2018, 13:03 | Сообщение № 31
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Catand76,
макрос для кнопки будет такой
[vba]
Код
Sub Кнопка1_Щелчок()
   Range("B3").Select
   Sortir
End Sub
[/vba]

а в коде, строку
[vba]
Код
    Set d = d.Offset(1).Resize(d.Rows.Count - 1)
[/vba]
замените на
[vba]
Код
    Set d = d.Offset(2).Resize(d.Rows.Count - 2)
[/vba]




Сообщение отредактировал boa - Четверг, 05.07.2018, 13:04
 
Ответить
СообщениеCatand76,
макрос для кнопки будет такой
[vba]
Код
Sub Кнопка1_Щелчок()
   Range("B3").Select
   Sortir
End Sub
[/vba]

а в коде, строку
[vba]
Код
    Set d = d.Offset(1).Resize(d.Rows.Count - 1)
[/vba]
замените на
[vba]
Код
    Set d = d.Offset(2).Resize(d.Rows.Count - 2)
[/vba]

Автор - boa
Дата добавления - 05.07.2018 в 13:03
Catand76 Дата: Четверг, 05.07.2018, 13:31 | Сообщение № 32
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Range("B3").Select

Я так понимаю "В3" - это ячейка из диапазона который нужно отсортировать...?


Век живи - век учись
 
Ответить
Сообщение
Range("B3").Select

Я так понимаю "В3" - это ячейка из диапазона который нужно отсортировать...?

Автор - Catand76
Дата добавления - 05.07.2018 в 13:31
boa Дата: Четверг, 05.07.2018, 15:19 | Сообщение № 33
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Catand76, совершенно верно
а 1-цы на2-ки поменял, потому, что шапка таблицы у вас заканчивается во 2-й строке.




Сообщение отредактировал boa - Четверг, 05.07.2018, 15:20
 
Ответить
СообщениеCatand76, совершенно верно
а 1-цы на2-ки поменял, потому, что шапка таблицы у вас заканчивается во 2-й строке.

Автор - boa
Дата добавления - 05.07.2018 в 15:19
Catand76 Дата: Пятница, 06.07.2018, 02:41 | Сообщение № 34
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
boa, ОГРОМНОЕ СПАСИБО.....
Сейчас немного разберусь с делами и начну ОПГРЕЙД файла....
Еще раз всем спасибо!!!!


Век живи - век учись
 
Ответить
Сообщениеboa, ОГРОМНОЕ СПАСИБО.....
Сейчас немного разберусь с делами и начну ОПГРЕЙД файла....
Еще раз всем спасибо!!!!

Автор - Catand76
Дата добавления - 06.07.2018 в 02:41
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!