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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос VBA нажимает ненужные клавиши - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос VBA нажимает ненужные клавиши
ceHnau Дата: Среда, 23.06.2021, 10:16 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

2016
Здравствуйте!
Создаю рабочую таблицу. В VBA не силен, нашел нужный, настроил, но в последствии заметил, что при выполнении эта зараза жмет Num Lock, хотя в теле самого макроса упоминания этого не нашел.
Сам код:
[vba]
Код
Sub Сортировать()
' Сортировать Макрос
    Call Очистить_фильтр
    Range("A3").Select
    SendKeys "^+{END}"
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "B3:B758"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "C3:C3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "D3:D3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "E3:E3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "F3:F3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "G3:G3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "H3:H3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Общий список").Sort
        .SetRange Range("A3:N3000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
[/vba]

Если Num Lock отключен, то ничего не происходит. Но если вкл, то при выполнении начинает то включаться, то отключаться. Макрос подвязан к кнопке "Сортировать". Пример во вложении. Буду благодарен, если подскажите в чем проблема. Цифрами с NumLock пользуюсь постоянно, подобны переключения неприемлемы.
К сообщению приложен файл: 1468506.xlsm (26.2 Kb)
 
Ответить
СообщениеЗдравствуйте!
Создаю рабочую таблицу. В VBA не силен, нашел нужный, настроил, но в последствии заметил, что при выполнении эта зараза жмет Num Lock, хотя в теле самого макроса упоминания этого не нашел.
Сам код:
[vba]
Код
Sub Сортировать()
' Сортировать Макрос
    Call Очистить_фильтр
    Range("A3").Select
    SendKeys "^+{END}"
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "B3:B758"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "C3:C3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "D3:D3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "E3:E3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "F3:F3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "G3:G3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Общий список").Sort.SortFields.Add2 Key:=Range( _
        "H3:H3000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Общий список").Sort
        .SetRange Range("A3:N3000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
[/vba]

Если Num Lock отключен, то ничего не происходит. Но если вкл, то при выполнении начинает то включаться, то отключаться. Макрос подвязан к кнопке "Сортировать". Пример во вложении. Буду благодарен, если подскажите в чем проблема. Цифрами с NumLock пользуюсь постоянно, подобны переключения неприемлемы.

Автор - ceHnau
Дата добавления - 23.06.2021 в 10:16
Serge_007 Дата: Среда, 23.06.2021, 10:32 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Здравствуйте

Num Lock отключается на строке [vba]
Код
SendKeys "^+{END}"
[/vba], хотя эта строка действительно не должна это делать

Зачем она Вам?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Num Lock отключается на строке [vba]
Код
SendKeys "^+{END}"
[/vba], хотя эта строка действительно не должна это делать

Зачем она Вам?

Автор - Serge_007
Дата добавления - 23.06.2021 в 10:32
ceHnau Дата: Среда, 23.06.2021, 11:11 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

2016
Num Lock отключается на строке
SendKeys "^+{END}"

, хотя эта строка действительно не должна это делать

Зачем она Вам?

Но ведь, действительно, не должна - она имитирует нажатие Ctrl+Shift+End, я просто не знаю команду на выделение всего диапазона, при наличии включенного фильтра.
 
Ответить
Сообщение
Num Lock отключается на строке
SendKeys "^+{END}"

, хотя эта строка действительно не должна это делать

Зачем она Вам?

Но ведь, действительно, не должна - она имитирует нажатие Ctrl+Shift+End, я просто не знаю команду на выделение всего диапазона, при наличии включенного фильтра.

Автор - ceHnau
Дата добавления - 23.06.2021 в 11:11
Serge_007 Дата: Среда, 23.06.2021, 11:14 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
я просто не знаю команду на выделение всего диапазона
Свойство Worksheet.UsedRange


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
я просто не знаю команду на выделение всего диапазона
Свойство Worksheet.UsedRange

Автор - Serge_007
Дата добавления - 23.06.2021 в 11:14
ceHnau Дата: Среда, 23.06.2021, 11:38 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

2016
Свойство Worksheet.UsedRange

Спасибо! Работает, однако логику я пока не понимаю, не подскажите?
[vba]
Код
ActiveSheet.UsedRange.Select
[/vba] выделяет всю "рабочую" область, включая закрепленную шапку таблицы.
[vba]
Код
SendKeys "^+{END}"
[/vba] я ввел после команды [vba]
Код
Range("A3").Select
[/vba], т.к. мне требовалась именно рабочая область от А3 и ниже.
Есть ли возможность выделения рабочего диапазона от нужной строки/столбца не через команды имитации нажатий клавиш?
 
Ответить
Сообщение
Свойство Worksheet.UsedRange

Спасибо! Работает, однако логику я пока не понимаю, не подскажите?
[vba]
Код
ActiveSheet.UsedRange.Select
[/vba] выделяет всю "рабочую" область, включая закрепленную шапку таблицы.
[vba]
Код
SendKeys "^+{END}"
[/vba] я ввел после команды [vba]
Код
Range("A3").Select
[/vba], т.к. мне требовалась именно рабочая область от А3 и ниже.
Есть ли возможность выделения рабочего диапазона от нужной строки/столбца не через команды имитации нажатий клавиш?

Автор - ceHnau
Дата добавления - 23.06.2021 в 11:38
ceHnau Дата: Среда, 23.06.2021, 11:41 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

2016
Есть ли возможность выделения рабочего диапазона от нужной строки/столбца не через команды имитации нажатий клавиш?

Подумал и не смог придумать, для чего бы нужна была такая задача. Вопрос отпадает
 
Ответить
Сообщение
Есть ли возможность выделения рабочего диапазона от нужной строки/столбца не через команды имитации нажатий клавиш?

Подумал и не смог придумать, для чего бы нужна была такая задача. Вопрос отпадает

Автор - ceHnau
Дата добавления - 23.06.2021 в 11:41
  • Страница 1 из 1
  • 1
Поиск:

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