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

Вход

Регистрация

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

 

= Мир MS Excel/Позицирование формы возле ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Позицирование формы возле ячейки (Программирующим в VBA для Excel 2007)
Позицирование формы возле ячейки
VovaK Дата: Четверг, 03.11.2011, 23:19 | Сообщение № 1
Группа: Друзья
Ранг: Форумчанин
Сообщений: 116
Репутация: 41 ±
Замечаний: 0% ±

10
Не стал заморачиваться в сторону совместимости (тем более, что ZVI уже написал - лучше не сделаешь, см. здесь http://www.planetaexcel.ru/forum.php?thread_id=9786 ) и сваял средствами VBA вполне понятный алгоритм расчета координат позицирования формы на экране рядом с ячейкой.

Для версий ниже 12 позицирует форму в средине экрана.
К сообщению приложен файл: FormPOS1.xls (66.0 Kb)


Всем удачи. У нас все получится.
С уважением, Владимир.


Сообщение отредактировал VovaK - Пятница, 04.11.2011, 12:02
 
Ответить
СообщениеНе стал заморачиваться в сторону совместимости (тем более, что ZVI уже написал - лучше не сделаешь, см. здесь http://www.planetaexcel.ru/forum.php?thread_id=9786 ) и сваял средствами VBA вполне понятный алгоритм расчета координат позицирования формы на экране рядом с ячейкой.

Для версий ниже 12 позицирует форму в средине экрана.

Автор - VovaK
Дата добавления - 03.11.2011 в 23:19
nerv Дата: Пятница, 04.11.2011, 09:05 | Сообщение № 2
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Владимир, я посмотрел, но ни чего не понял happy
В свою очередь, хотел бы попросить у Вас скриншот, как ведет себя форма (позиционируется) в 2007 при следующем раскладе (при масштабе 100):

[vba]
Код
With Application
       Me.Top = (((.Height - .UsableHeight) + (.ActiveCell.Top - .ActiveWindow.VisibleRange.Top) + .ActiveCell.Height - 2) * .ActiveWindow.Zoom / 100) + .ActiveWindow.Top + .Top
       Me.Left = (((.Width - .UsableWidth) + (.ActiveCell.Left - .ActiveWindow.VisibleRange.Left) + .ActiveCell.MergeArea.Width + 17) * .ActiveWindow.Zoom / 100) + .ActiveWindow.Left + .Left
End With
[/vba]

Учитывается (по крайне мере в 2003):
+ положение приложения (свернуто в окно/максимизировано)
+ положение активного окна (свернуто в окно/максимизировано)
+ панели инструментов сверху
+ панели инструментов слева
+ ширина активной ячейки (объединенной в том числе)
+ прокрутка листа

+/- масштабирование

Не учитывается:
- закрепление областей ("спасибо" VisibleRange)
- разделение областей ("спасибо" VisibleRange)
- высота активной ячейки
- панели справа
- панели снизу

Как это выглядит у меня см. файл
К сообщению приложен файл: position.zip (40.6 Kb)


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Пятница, 04.11.2011, 09:13
 
Ответить
СообщениеВладимир, я посмотрел, но ни чего не понял happy
В свою очередь, хотел бы попросить у Вас скриншот, как ведет себя форма (позиционируется) в 2007 при следующем раскладе (при масштабе 100):

[vba]
Код
With Application
       Me.Top = (((.Height - .UsableHeight) + (.ActiveCell.Top - .ActiveWindow.VisibleRange.Top) + .ActiveCell.Height - 2) * .ActiveWindow.Zoom / 100) + .ActiveWindow.Top + .Top
       Me.Left = (((.Width - .UsableWidth) + (.ActiveCell.Left - .ActiveWindow.VisibleRange.Left) + .ActiveCell.MergeArea.Width + 17) * .ActiveWindow.Zoom / 100) + .ActiveWindow.Left + .Left
End With
[/vba]

Учитывается (по крайне мере в 2003):
+ положение приложения (свернуто в окно/максимизировано)
+ положение активного окна (свернуто в окно/максимизировано)
+ панели инструментов сверху
+ панели инструментов слева
+ ширина активной ячейки (объединенной в том числе)
+ прокрутка листа

+/- масштабирование

Не учитывается:
- закрепление областей ("спасибо" VisibleRange)
- разделение областей ("спасибо" VisibleRange)
- высота активной ячейки
- панели справа
- панели снизу

Как это выглядит у меня см. файл

Автор - nerv
Дата добавления - 04.11.2011 в 09:05
VovaK Дата: Пятница, 04.11.2011, 11:40 | Сообщение № 3
Группа: Друзья
Ранг: Форумчанин
Сообщений: 116
Репутация: 41 ±
Замечаний: 0% ±

10
Саш, ну как я скиршот покажу - фотошопом? Alt_printScrin копирует только форму.
Попробовал Ваш код - центрит на экране хорошо.

Саша не заморачивайтесь для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

В 2007 много проще, по крайней мере по левому краю...


Всем удачи. У нас все получится.
С уважением, Владимир.
 
Ответить
СообщениеСаш, ну как я скиршот покажу - фотошопом? Alt_printScrin копирует только форму.
Попробовал Ваш код - центрит на экране хорошо.

Саша не заморачивайтесь для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

В 2007 много проще, по крайней мере по левому краю...

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

Excel 2016
Quote (VovaK)
как я скиршот покажу - фотошопом? Alt_printScrin копирует только форму.

Можно видео с экрана записать.

ЗЫ РrintScrin копирует весь экран.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (VovaK)
как я скиршот покажу - фотошопом? Alt_printScrin копирует только форму.

Можно видео с экрана записать.

ЗЫ РrintScrin копирует весь экран.

Автор - Serge_007
Дата добавления - 04.11.2011 в 11:45
VovaK Дата: Пятница, 04.11.2011, 12:05 | Сообщение № 5
Группа: Друзья
Ранг: Форумчанин
Сообщений: 116
Репутация: 41 ±
Замечаний: 0% ±

10
Спасибо Сергей, не пользовался, привык еще с DOSa.

Саша Скриншоты Вашего расклада только после работы - Zip запрещает политика.

Свой расклад (если интересно) в приложении
К сообщению приложен файл: 5181322.zip (51.6 Kb)


Всем удачи. У нас все получится.
С уважением, Владимир.


Сообщение отредактировал VovaK - Пятница, 04.11.2011, 12:07
 
Ответить
СообщениеСпасибо Сергей, не пользовался, привык еще с DOSa.

Саша Скриншоты Вашего расклада только после работы - Zip запрещает политика.

Свой расклад (если интересно) в приложении

Автор - VovaK
Дата добавления - 04.11.2011 в 12:05
nerv Дата: Пятница, 04.11.2011, 12:53 | Сообщение № 6
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (VovaK)
для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

так что ли?

Quote (VovaK)
Свой расклад (если интересно) в приложении

Конечно, интересно. Было иначе, не просил) Посмотрел, вроде как приемлемо. Ожидал худшего : )
К сообщению приложен файл: 0670359.jpg (95.2 Kb)


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение
Quote (VovaK)
для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

так что ли?

Quote (VovaK)
Свой расклад (если интересно) в приложении

Конечно, интересно. Было иначе, не просил) Посмотрел, вроде как приемлемо. Ожидал худшего : )

Автор - nerv
Дата добавления - 04.11.2011 в 12:53
nerv Дата: Вторник, 04.12.2012, 03:30 | Сообщение № 7
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

немножко мозг включил. Форма вызывается Ctrl+Enter. Без WinAPI. Пример базовый. На исчерпывающий ответ не претендует.

UPD: при зуме не работает
К сообщению приложен файл: Sub_nerv_SetFor.xls (44.5 Kb)


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Вторник, 04.12.2012, 03:45
 
Ответить
Сообщениенемножко мозг включил. Форма вызывается Ctrl+Enter. Без WinAPI. Пример базовый. На исчерпывающий ответ не претендует.

UPD: при зуме не работает

Автор - nerv
Дата добавления - 04.12.2012 в 03:30
Мир MS Excel » Вопросы и решения » Готовые решения » Позицирование формы возле ячейки (Программирующим в VBA для Excel 2007)
  • Страница 1 из 1
  • 1
Поиск:

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