Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Частичная отработка макроса на вставку/удаление сток если макрос сделать "Private".
 
Добрый день.
На данном форуме находил много макросов на втавку/удаление строк. Всё работает отлично. Но если перед Sab добавить Private (что бы название макроса не отображалось в списке макросов) то макрос перестаёт вставлять строчку, хотя с ячейками что-то делает. Например (извиняюсь перед автором не смог найти тему, хотя она была недавно):
Код
Sub Li()
  ActiveCell.EntireRow.Copy
  Rows(ActiveCell.Row + 1).Insert
  With Rows(ActiveCell.Row + 1)
    Intersect(.Cells, range("AD:AF,AJ:AJ,AH:AH,AL:AQ,AS:AS")).ClearContents
    .Interior.ColorIndex = xlColorIndexNone
  End With
  Application.CutCopyMode = False
End Sub
Так вот: хоть макрос находится в модуле, хоть в модуле листа при добавлении Private перестаёт работать.
Как обойти данную проблему?
 
Цитата
mamalot написал:
Так вот: хоть макрос находится в модуле, хоть в модуле листа при добавлении Private перестаёт работать.
Враки! Все работает и там, и там.
Может не работать вызов макроса, но как вы это делаете, нам не ведомо.
Цитата
mamalot написал:
что бы название макроса не отображалось в списке макросов
в стандартном модуле вставить
Option Private Module
 
В том то и дело. Вызов макроса работает Ctrl+...,
Цитата
хотя с ячейками что-то делает.
За подсказку спасибо.
 
Цитата
Option Private Module
Названия макросов перестали отображаться в списке макросов, но и макросы перестали работать.
Перестаёт добавляться/удаляться строка, мне кажется, что чего-то не хватает, например объявить переменную или что-то в этом роде.
Поиск по просторам ни к чему не привёл. Потому что я не знаю что искать.
 
Автор имеет ввиду, что запуск макроса происходит через горячие клавиши. При этом он не хочет, чтобы он отражался в списке макросов.
У меня тоже не получается
 
И всё же.
Во вложении файл с макросом.
Макрос активируется: нажатием горячих клавиш "Сtrl+к" (к-при русской раскладке) и кнопкой.
Так вот: если мы Sub заменяем на Private Sub: при нажатии горячих клавиш макрос перестаёт работать, а при нажатии на кнопку - РАБОТАЕТ.

Вопрос: как сделать что бы макрос запускался сочетанием горячих клавиш и при этом он был не виден в списке макросов???
Ответа в сети не нашёл.
 
Попробуйте так.
Владимир
 
Доброе утро!
sokol92 спасибо за ответ!
Получается:
1. При этом нивелируется язык раскладки клавиатуры - хорошо!
2. Чтобы назначить сочетание горячих клавиш, например, "Ctrl+Shift+u" необходимо прописать: Application.OnKey "+^u", "Привет2"?
3. При этом макрос будет запускаться во всех открытых книгах Excel? Как этого избежать? Добавить в макрос проверку какая книга активная "If ActiveWorkbook.Name = "Копия Привет.xlsb" Then"?

Спасибо огромное :D , буду изучать.
Изменено: mamalot - 31 Янв 2018 09:55:36
 
Здравствуйте, mamalot!
Описание кодов клавиш для метода Application.Onkey здесь
Вопрос 3: поскольку Ваш макрос находится в целевой книге (а не в надстройке), то более эффективной будет конструкция:
Код
If ActiveWorkbook.Name = ThisWorkbook.Name Then
  ' требуемые действия
End If
Успехов!
Владимир
 
Спасибо огромное!
 
Добрый день.
В процессе эксплуатации выяснилась следующая деталь:
при использовании совета от sokol92 если сделать копию рабочей книги и открыть их одновременно, то макросы, прикреплённые к сочетаниям клавиш, работают только в последней открытой книге.
Как это побороть?
Спасибо.
 
Цитата
mamalot написал:
работают только в последней открытой книге
А как должно? Сочетание клавиш-то одно. Оно не может выполнять макрос из двух книг одновременно. Пересмотрите логику работы с книгой и с макросами.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо.
Страницы: 1
Читают тему (гостей: 1)