Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2014, 16:26   #1
oleg4226
Пользователь
 
Регистрация: 20.04.2014
Сообщений: 28
По умолчанию Создание своей панели для макросов в Office2010

Сделал учетную таблицу с несколькими листами
На каждом листе есть закрепленная область
Кнопки и рисунки под макросы соответственно вверху в закрепленной области чтоб не уходили при прокрутке

Вопрос такой - можно ли средствами Office сделать область для кнопок и рис под макросы чтоб она была по центру - не сдвигалась при прокрутке и редактировалась соответственно

Пробовал создать Вставка - Надпись и в свойствах Не перемещать и не изменять размеры - все равно перемещается со скроллом на месте не стоит
(думал в нее накидать кнопок макросов)

Либо надстройки какие есть которые дополнительную панель могут создать куда можно рис и кнопки вставлять под макросы ?

Полазил по интернету но внятного решения не нашел кроме
ToolbarToggle но это сторонняя программа а хотелось средствами Office это сделать

Есть у когонибудь решение этого вопроса ?
oleg4226 вне форума Ответить с цитированием
Старый 04.05.2014, 16:36   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

то, что Вы описали очень похоже на форму запущенную в немодальном режиме.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.05.2014, 17:20   #3
oleg4226
Пользователь
 
Регистрация: 20.04.2014
Сообщений: 28
По умолчанию

те это получается форма - которая открывается в немодальном режиме на открытие книги и ее принудительно не закрыть так понял ?
как тогда задать немодальный режим для формы и повесить на нее кнопки и рис макросов ?
oleg4226 вне форума Ответить с цитированием
Старый 04.05.2014, 17:43   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

да, все сходится:
- как не дать закрыть форму - на форуме встречались эта тема не раз
- запуск в немодальном режиме: userform1.show 0
- ну и форма - она и в Африке форма, располагаейте в ней все, что посчитаете нужным.

(подозреваю скоро и Вас и пользователей начнет раздражать форма, которая постоянно перед глазами и загораживает обзор)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.05.2014, 22:52   #5
oleg4226
Пользователь
 
Регистрация: 20.04.2014
Сообщений: 28
По умолчанию

так получилось - осталось только 2 вопроса

1.сделать так чтобы эта панель при старте позиционировалась в рамках открытого листа excel в левом верхнем углу независимо от
разрешения экрана
как задать привязку положения формы при старте к ячейке A:1 или другой способ какой есть
2.в формах используются х32 функции - те в Office х64 они работать не будут как понимаю - переписывать их надо под х64
как сделать универсально чтоб и х64 и х32 Office работал с функциями
Вложения
Тип файла: rar Книга2.rar (32.5 Кб, 12 просмотров)
oleg4226 вне форума Ответить с цитированием
Старый 04.05.2014, 23:49   #6
oleg4226
Пользователь
 
Регистрация: 20.04.2014
Сообщений: 28
По умолчанию

вот здесь описан макрос который привязывает форму к координатам ячейки по правому клику мыши


http://forum.developing.ru/showthrea...0187#post20187
Цитата:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim b As CommandBar
dx = 0: dy = 0
For Each b In Application.CommandBars
If b.Visible Then
Select Case b.Position
Case msoBarLeft: dx = dx + b.Width
Case msoBarMenuBar, msoBarTop: dy = dy + b.Height
End Select
End If
Next
With Target.Application.ActiveWindow
UserForm1.Left = (Target.Left - .VisibleRange.Left) * .Zoom / 100 + .Application.Left + dx
UserForm1.Top = (Target.Top - .VisibleRange.Top) * .Zoom / 100 + .Application.Top + dy
UserForm1.Show
End With
End Sub
как его привязать к координатам A:1 на открытие листа ??
макрос рабочий - в файле кликайте правой клавишей мыши по полю и форма будет туда смещаться
Вложения
Тип файла: zip Книга3.zip (36.9 Кб, 8 просмотров)
oleg4226 вне форума Ответить с цитированием
Старый 05.05.2014, 00:24   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

cells(activewindow.scrollrow, activewindow.scrollcolumn) - левая верхняя видимая ячейка
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.05.2014, 01:08   #8
oleg4226
Пользователь
 
Регистрация: 20.04.2014
Сообщений: 28
По умолчанию

это только на старте надо чтоб осталась возможность ее сместить если мешать будет на маленьких мониторах
oleg4226 вне форума Ответить с цитированием
Старый 05.05.2014, 01:10   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
cells(activewindow.scrollrow, activewindow.scrollcolumn) - левая верхняя видимая ячейка
это если нет закреплённых строк и столбцов...

а вообще, вычислить координаты для формы, если её надо поместить ТОЧНО над нужной ячейкой, весьма непросто

на мой взгляд, куда проще было сделать кнопки там, где они должны быть, - на ленте Excel

Цитата:
как сделать универсально чтоб и х64 и х32 Office работал с функциями
а искать решение не пробовали?
http://excelvba.ru/articles/WinAPI

пример, как надо записывать функции (в 2 вариантах)
Код:
#If VBA7 Then    '  Office 2010-2013
   Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As LongPtr, ByVal dwDuration As LongPtr) As LongPtr
#Else    '  Office 2003-2007
   Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
#End If

-----------
кросспост:
http://www.planetaexcel.ru/forum/ind...ID=1&TID=56898

Последний раз редактировалось EducatedFool; 05.05.2014 в 01:14.
EducatedFool вне форума Ответить с цитированием
Старый 05.05.2014, 07:29   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
это если нет закреплённых строк и столбцов...
согласен, но не только...
у меня, в системе с двумя мониторами, эта панель даже на другом мониторе появлялась(((
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хитрая кнопка на своей панели инструментов Bagir Microsoft Office Excel 2 24.01.2013 10:42
Создание из 3 макросов одного. bedrock90 Microsoft Office Excel 1 18.10.2012 18:12
Создание web панели для игрового хостинга }{oт@бь)ч PHP 8 17.05.2010 19:42
Создание макросов Женечка2607 Microsoft Office Excel 3 23.04.2009 21:17
Создание комплекта макросов для WORD DrManual Фриланс 4 14.02.2009 18:53