|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Требуется исключить возможность перехода между листами путем смены вкладок (интерфейсом самого excel) все листы кроме одного (лист "Меню") всегда со свойством Код: vbnet 1.
В старом офисе делал панельки, но в новых версиях с xml не хочется морочить голову. Сейчас реализовано на стандартных функциях листов Worksheet_BeforeRightClick Worksheet_BeforeDoubleClick т.е. когда кликается в определенной ячейке - возвращается на лист "Меню", а на нем уже меню для перехода в нужный лист. или вызывается пользовательское контекстное меню, из которого осуществляется переход. При этом пользователю нужно знать где и как кликнуть, пользовательское к.меню постоянно дорабатывать - трудоемко. Вопрос: Как реализовать интерфейс пользователя для перехода между листами, без использования стандартного интерфейса excel (с помощью функций VBA)? Предполагается реализовать: - переход на предыдущий активный лист (кнопка 'назад'); - переход на лист - изменение доступных для перехода листов для пользователей с разными ролями (информация о доступе храниться на отдельном листе в этой книге); - привязку к доступным для перехода листам (например: с листа 1 можно перейти только на лист 2 и 3, но нельзя перейти на лист4). есть отдельный лист с таблицей связей полей/листов; - после перехода включение автофильтра для листа на который осуществляется переход с атрибутами фильтра - значением на листе с которого переходим (для некоторых листов); - выбор ячейки/строки листа на который переходим, исходя из значения в текущей ячейке(строке) на листе с которого переходим. Добавлю: - прокрутка листа, закрепление областей листа - используется. - защита листа нужно включать. - общий доступ желательно включать. Рассматриваемые варианты: - объекты activeX, размещаемые на самом листе (например одна кнопка - МЕНЮ); - объекты activeX, размещаемые на пользовательской форме (форма должна всегда находиться в одном месте на экране и не перекрывать данные); - функции листа (оставить текущий вариант, сделать подсказки, научить пользователей); - пользовательское контекстное меню (оставить текущий вариант, , сделать подсказки, научить пользователей (нежелателен - сложно в доработке); - использование пользовательских меню в ленте (нежелательно - сложно в доработке), и вообще ленту хотелось бы потом убрать. - использование надстроек с любым из вариантов не рассматривается (файл должен включать все необходимое для его работы). Предложите варианты? Куда копать? за файл-пример реализации отдельное спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 13:24 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
никто не прочитал? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 18:04 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
К этой же теме еще вопрос: Есть данные в именованных диапазонах. Оформление данных (цвет фона, шрифта,положение текста) важно. Для выборки данных, вставки строк в диапазонах данных лучше использовать sql или только функции Экселя ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 05:11 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Bobgosникто не прочитал?вы написали рассматриваемые варианты, но не описали, чем они вам не подходят, поэтому не очень понятно, что именно нужно советовать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 08:43 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Shocker.Pro, BobgosРассматриваемые варианты: - объекты activeX, размещаемые на самом листе (например одна кнопка - МЕНЮ); - объекты activeX, размещаемые на пользовательской форме (форма должна всегда находиться в одном месте на экране и не перекрывать данные); - функции листа (оставить текущий вариант, сделать подсказки, научить пользователей); - пользовательское контекстное меню (оставить текущий вариант, , сделать подсказки, научить пользователей (нежелателен - сложно в доработке); - использование пользовательских меню в ленте (нежелательно - сложно в доработке), и вообще ленту хотелось бы потом убрать. - использование надстроек с любым из вариантов не рассматривается (файл должен включать все необходимое для его работы). я же не говорю что не подходят все. более того - используются сейчас первые 4. последних два варианта написал почему не хочу рассматривать. Хочу унифицировать подход к интерфейсу, чтобы пользователи не думали: чтобы сделать то-то, нужно кликнуть дважды там-то, чтобы сделать другое - нужно кликнуть меню на титульном листе и там уже активировать нужную функцию. А думали так: нужно что-то сделать, значит точно нужно выполнить такую (желательно одну) последовательность действий. Совета прошу: что лучше всего будет использовать из вариантов. Может еще есть предложения, опыт использования? ЗЫ, Пользователи будут новые - не приученные ни к чему, поэтому чем проще будет интерфейс, тем лучше. Файл будет развиваться практически в полевых условиях, поэтому, чем проще будет доработка, тем лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 08:56 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Shocker.Pro, почти все предполагаемое к реализации сделал по старинке - контекстными меню. пришлось повозиться, чтобы к соде листа было все попроще и не приходилось править при изменении дизайна. На каждом листе только одинаковые функции: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
подозреваю, что с защитой листа и общим доступом будут проблемы. решать буду - по мере поступления работы еще много код создания контекстного меню ниже. где-то вроде был файлик с кодами всех картинок для кнопок/ подскажите пожалуйста Faceid для (Домой, Назад, Фильтр и Ввода) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 01:50 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
и на всякий случай повторю вопросы: 1. Как лучше реализовать интерфейс пользователя для перехода между листами, без использования стандартного интерфейса excel (с помощью функций VBA)? 2. Для выборки данных из именованных диапазонов, вставки строк них лучше использовать sql или VBA? 3. Поделитесь опытом и подходами к реализации интерфейса пользователя. Какие объекты, подходы использовались, из чего исходили при выборе? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 01:56 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
если надо че-то глобально запретить юзверю, то я начинаю отсюда смотреть: List of ID numbers for built-in CommandBar controls in Excel 2000 вот когда-то давно откуда-то слизал код Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
может пригодится... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 13:31 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Bobgosно в новых версиях с xml не хочется морочить головуТак не морочьте. Можно и старые коды применять. У меня вот есть надстройка, которая осуществляет как раз переход по листам: Список листов книги Работает во всех версиях. Для Ваших целей надо будет добавить еще пару кнопок на панель(вперед, назад и все). Возможно, надо будет добавить исключение скрытых листов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 14:03 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
The_Prist, Спасибо. Надстройки не мой ваиант, но пример посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2016, 15:21 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
The_PristBobgosно в новых версиях с xml не хочется морочить головуТак не морочьте. Можно и старые коды применять. У меня вот есть надстройка, которая осуществляет как раз переход по листам: Список листов книги The_Prist, как удалить/отключить/скрыть элементы на стандартных панелях excel. Прикреплен скрин и код под катом. Вроде нашел кнопку "вырезать" что-то даже меняю (TooltipText), могу удалить вроде бы, но по факту кнопка вырезать остается без изменений. Обратиться к кнопкам меню на манер: Application.CommandBars("Worksheet Menu Bar").Controls(2).controls(1) тоже не получается. Что не так? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2016, 16:06 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Bobgos, Есть варианты вернуть vba возможности изменения меню в риббоне xls?. Элемент меню Надстройки не позволяют исключить доступ пользователя к изменениям. Отлов гор. Клаш можно обойти изменив сочетания Ненадежно, лучше бы в код наначат эти сочетания на дефолтные. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2016, 22:15 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Bobgos, Проверьте атрибут панели .Protect. Это может не дать изменять элементы. Плюс удаление элементов из меню редко когда допускается - только для своих панелей и для всплывающих меню. Для встроенных можете попробовать свойства .Visible и .Enabled. В свое время писал код подобный, вот кусок: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Возможно, надо еще какие-то элементы искать на панели. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2016, 09:16 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
The_Prist, ничего не получается. как были кнопки видимы и активны, так и остаются Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 09:17 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Bobgos, на какое событие-то вешаете? Надо на BeforeRightClick в модуле листа(или книги). Иначе не сработает(если просто как процедуру запустить). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 09:43 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
The_Prist, поставил как сказано BeforeRightClick не помогает. Процедура отрабатывает - проверял, код не работает (тот что в посте выше один в один). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 17:21 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
Bobgos, а что именно не работает? В меню есть пункты Вставить, Вырезать, Очистить содержимое? Если часть пунктов скрывается, а часть пунктов из перечисленных отображается - значит надо искать причину по которой они не хотят блокироваться. Возможно, ID не подходят или версия офиса как-то влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 18:09 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
The_PristBobgos, а что именно не работает? В меню есть пункты Вставить, Вырезать, Очистить содержимое? Если часть пунктов скрывается, а часть пунктов из перечисленных отображается - значит надо искать причину по которой они не хотят блокироваться. Возможно, ID не подходят или версия офиса как-то влияет. The_Prist, id как минимум =21 верный. Офиса - конечно. В 2003 все работало, а с приходом риббона - нет, но решил проверить утверждение: The_PristТак не морочьте. Можно и старые коды применять. У меня вот есть надстройка, которая осуществляет как раз переход по листам: Список листов книги- в легкую получается работать с меню "Cell" - оно не привязано к риббону. - можно добавлять кнопки в меню надстройки (причем пофиг в какой панели создаешь, появляется новое меню 'Надстройки' и в нем новые кнопки. а вот стандартные меню и кнопки в риббоне: типа вырезать, вставить, копировать в меню "Worksheet Menu Bar" да и все другие стандартные меню excel в риббоне - ну никак не хотят меняться. Максимум чего добился - изменил Tooltriptext для кнопки Вырезать было 'Вырезать Ctrl + x' стало 'МойТексТ Ctrl+X' А задача - заблокировать эти кнопки, добавить в стандартные меню - свои. как вариант уже думаю использовать полноэкранный режим приложения, когда риббона просто не видно. Нужно чтобы работало в офисе 2007 и 2010. Ну и более старших. Может зря стараюсь и без xml ничего не выйдет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 21:28 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
The_PristВозможно, ID не подходят или версия офиса как-то влияет. чтобы удостовериться Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
выдает: Debug.Print30003 &Правка ---------------------------------- 21 &Вырезать но кнопка вырезать прекрасно отображается и включена. что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 22:19 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
файл к предыдущему посту - протестите, может что подправите? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 22:22 |
|
VBA.Excel интерфейс перехода между листами
|
|||
---|---|---|---|
#18+
вроде тема не нова, но ответов так не найдено. есть куча примеров по переходам между листами, например тут: Создать на панели инструментов выпадающий список? в том числе надстройками, но нигде не изменятся стандартные панели риббона. так понимаю без xlm не обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2016, 12:40 |
|
|
start [/forum/topic.php?fid=61&msg=39327416&tid=2172908]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 289ms |
total: | 416ms |
0 / 0 |