Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с формами! Word (VBA) / 18 сообщений из 18, страница 1 из 1
29.09.2004, 20:32
    #32717733
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Доброго времени суток...

У меня есть проблемма, я изучаю VBA и сталкнулся с необходимостью использовать формы. В общем я не знаю как привязать к форме какие либо функции, например:
мне надо, что бы в определенной строчке (Lable) при вызове формы отображалось сочетание клавиш для определенного макроса. Я уже перерыл всю книгу VBA 2002 и в принципе ничего подобного не нашел, там только примеры использования форм, но не привязка какого либо макроса к самой форме. В хелпе тоже особо существенного не смог найти, единственное, что я нашел это initialize. На сколько я понимаю это зарузка каких - либо параметров в форму при её загрузке. В общем я в полной растерянности, так как не знаю как с этим работать.

Единственное, что я смог это сделать что бы при нажатии кнопки вылетал мэсадж бокс, с требуемой информацией, а надо что бы эта информация была в нужном мне Lable.

Помогите разобраться, или хотя бы направте мои мысли в нужную сторону.

Заранее благодарен.
...
Рейтинг: 0 / 0
29.09.2004, 20:39
    #32717736
Один
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
GotarЕдинственное, что я смог это сделать что бы при нажатии кнопки вылетал мэсадж бокс, с требуемой информацией, а надо что бы эта информация была в нужном мне Lable.
Вы сделали самое главное :)
Теперь вместо MsgBox напишите Label.Caption = ваша информация
...
Рейтинг: 0 / 0
30.09.2004, 18:35
    #32719028
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Спасибо за ответ, но проблемма немного в другом.... Есть форма..

Sub Form1_initialize()

допустим есть лэйбл1

CustomizationContext = ActiveDocument
For Each myKey1 In _
KeysBoundTo(KeyCategory:=wdKeyCategoryCommand, _
Command:="a_Obshiy_zagalovok")
myStr1 = myStr1 & myKey1.KeyString & vbCr
Next myKey1
Label1.Caption = myStr1

Но при запуске формы лэйбл1 остается пустым... Мое подозрение в том, что я не правильно понимаю структуру формы и метод её програмирования.

Где у меня ошибка? (По мимо ДНК 8)) )
...
Рейтинг: 0 / 0
08.10.2004, 18:27
    #32730711
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
up 8(

Помогите.... ничего не выходит.... Как побороть форму?
...
Рейтинг: 0 / 0
08.10.2004, 19:04
    #32730757
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
В АКЦЕСЕ я и сам непонимаю как онон варится, но предложил бы попробовать то же самое в Form_Load

Magnus
...
Рейтинг: 0 / 0
08.10.2004, 19:21
    #32730782
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Тут трабла есть 8( форма вызывается form.show или form.load, но ... но ... но... как я понимаю то загрузка информации в форму происходит при private sub form_initialize() , но если посмотреть хелп, то там сказано, что при form.load -initialize не пашет.... работает только с form.show.... в общем мне друг сказал, что с этими формами вообще гемор..... Вот в каком то VB (еще в школе преподавали) вообще было клева, рисуешь форму, и скриптиш отдельный элемент будь то кнопка, фрейм, лэйбл, как пропрет, а в VBA хренушки, называется сначала угадай как 8(( Грусно как-то 8(
Неужели не кто с формами не разобрался?
...
Рейтинг: 0 / 0
08.10.2004, 19:27
    #32730788
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
initialize вызывается всегда при создании формы первый раз. Если после этого ты ее скроешь(Hide) и захочешь позже вновь пказать(Show) то событие уже не вызывается.

Все-таки попробуй поместить код в Form_Load

Magnus
...
Рейтинг: 0 / 0
08.10.2004, 20:01
    #32730821
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Не пашет 8((((
Блин я че-то торможу по страшному.....
Короче создаем форму.. Кликаем - View Code там пишем
Sub Form1_initialize()
CustomizationContext = ActiveDocument
For Each myKey1 In _
KeysBoundTo(KeyCategory:=wdKeyCategoryCommand, _
Command:="a_Obshiy_zagalovok")
myStr1 = myStr1 & myKey1.KeyString & vbCr
Next myKey1
Label1.Caption = myStr1
End Sub

потом запускаем на прямую, либо делаем отдельный модуль вызывающий эту форму:

Sub testing()
Dim UserForm1 As UserForm
Form1.Show (vbModeless)
End Sub

Я делаю так вот..... Форма вывалевается, но пустая, только с тем что я на ней по нарисовал....

Вопрос так это делается или не так?
...
Рейтинг: 0 / 0
08.10.2004, 20:06
    #32730824
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Было б это VB я б тебе расписал. А так , пес его знает если честно. Придут знатоки VBA - расскажут.

Magnus
...
Рейтинг: 0 / 0
08.10.2004, 20:09
    #32730825
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Можешь расписать как это в VB? Я пологаю что структура должна быть схожая...
...
Рейтинг: 0 / 0
08.10.2004, 20:22
    #32730830
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Gotar
Sub Form1_initialize()
...
End Sub

Есть предположение, что Sub Form1 _initialize не вызываается, т.к. она просто не привязана к какому-либо событию. Попробуйте перенести ваш код в

UserForm _Initialize
...
Рейтинг: 0 / 0
08.10.2004, 20:26
    #32730833
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Как уже сказал, я бы поместил этот код в Form_Load.
Вероятно в Акцесе другая последовательность вызова событий.

Magnus
...
Рейтинг: 0 / 0
08.10.2004, 20:32
    #32730838
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Magnus23Как уже сказал, я бы поместил этот код в Form_Load.
Вероятно в Акцесе другая последовательность вызова событий.
А я что-то вообще здесь упоминания про Access не нашел....
Просто вызов с префиксом Form1_ как-то вообще не похож на обработчик события. Но я с VBA тоже не работал уже очень давно.
...
Рейтинг: 0 / 0
08.10.2004, 20:33
    #32730839
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Более того, название треда Работа с формами! Word (VBA)
:)
...
Рейтинг: 0 / 0
08.10.2004, 20:36
    #32730842
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Хм... не работает всеравно.... Я боюсь дело в том что не совсем ясна структура формы в VBA.

Во первых есть тело формы, которая по идее несет основной код. Так же есть всякие более мелкие элементы которые живут непосредственно на форме, такие как фрэймы, кнопки, лэйблы и.т.д. Они скриптятся либо отдельно, либо непосредственно в самой форме.

В книжке VBA 2002 есть пример, но он показывает как скриптить не посредственно саму форму, например чтоб вываливающиеся таблички содержали какую-то инфу, кнопки пахали и тд итп.....

В книге вот такая структура:

Private Sub UserForm_Initialize()
...
...
...
Private Sub Frame_Click(в книге только клики рассматриваются)()
...
...
...
End Sub

Private Sub Lable_Click()
...
...
...
End Sub

Private Sub Button_Click()
...
...
...
End Sub


End Sub

Вот такие пироги....
...
Рейтинг: 0 / 0
08.10.2004, 20:44
    #32730846
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Alexey Kudinov Magnus23Как уже сказал, я бы поместил этот код в Form_Load.
Вероятно в Акцесе другая последовательность вызова событий.
А я что-то вообще здесь упоминания про Access не нашел....
Просто вызов с префиксом Form1_ как-то вообще не похож на обработчик события. Но я с VBA тоже не работал уже очень давно.
Это у меня снова глюки, VBA все время ассоциируется с акцесом :).
...
Рейтинг: 0 / 0
08.10.2004, 20:50
    #32730853
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Gotar
Последовательно опишите свои действия.
Я делаю так:
Открываю MSWord 2000
Иду Сервис-Макрос-Редактор Visual Basic
Нажимаю Insert New Form (слева вверху)
Появляется форма.
Кладу на нее label из Toolbox
Делаю DblClick на Label
Появляется редактор VBA
Делаю Ctrl+A
Делаю Shift + Ins и вставляю следующий текст
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub UserForm_Initialize()
CustomizationContext = ActiveDocument
For Each myKey1 In _
    KeysBoundTo(KeyCategory:=wdKeyCategoryCommand, Command:="FileNew")
    myStr1 = myStr1 & myKey1.KeyString & vbCr
Next myKey1
Label1.Caption = myStr1
End Sub
Нажимаю F5
Появляется форма где вместо Label1 я вижу Shortcut к команде FileNew, а именно Ctrl+N

А как делаете вы ?
...
Рейтинг: 0 / 0
08.10.2004, 20:59
    #32730858
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с формами! Word (VBA)
Будете смеяться.... у меня тоже это сработало гы гы... Тока вот в чем весь сыр бор, форма стряпана давно и на неё я клею макрос.... гы гы... Есть вариант в том что лэйбл слишком маленький и текст туда не влезает, хотя такое врядли возможно, скорее всего просто была бы часть тектса...

Алексей, огромное вам спасибо, теперь я знаю куда двигаться! Вы меня очень выручили....

Бум сидеть и разбираться, да к стати, в связи с тем, что этот вопрос частично решон, появляется следующий 8))) Как можно через форму поменять разкладку горячих клавиш для макросов?

То есть, нужно через форму считать клавиши, и влепить их сочетание как горячие клавиши для макроса 8)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с формами! Word (VBA) / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]