Форум пользователей Visio
http://visio.getbb.ru/

Непонятное поведение UserForm
http://visio.getbb.ru/viewtopic.php?f=6&t=1117
Страница 1 из 1

Автор:  lite.fun [ 25 апр 2017, 07:40 ]
Заголовок сообщения:  Непонятное поведение UserForm

Доброго времени суток, специалисты!

Необходимо мнение знающих людей по теме.
Предыстория: имеется файл visio, в нем создана UserForm1, данная форма вызывается по нажатию кнопки "Обновить все базы" на листе "ИД". Форма представляет из себя окно, в котором надпись "Идет обновление базы X из Y", где X и Y передается из тела скрипта формы. Скрипт следующий:
Код:
Private Sub UserForm_Activate()
Dim i As Integer: i = 0
Dim j As Integer: j = Application.ActiveDocument.DataRecordsets.Count
Label2.Caption = i
Label4.Caption = j
For i = 1 To j
Label2.Caption = i
Application.ActiveDocument.DataRecordsets(i).Refresh
Call UpdateBaseInfo1(i)
Next i
Unload Me
End Sub

Так вот, при создании и тестировании формы, она работала корректно, окно открывалось, в нем была надпись и X и Y обновлялись в режиме онлайн пока выполнялся скрипт формы, после чего окно закрывалось. Однако после очередного сохранения файла, закрытия и повторного открытия, при вызове формы, открывается окно формы, но в нем нет никакого текста, т.е. форма выполняется, скрипт в ней выполняется, но текст в форме не отображается.

Есть идеи почему так себя ведет Visio?

P.S. Файл во вложении

Вложения:
5 (№ 5).vsd [906 Кб]
Скачиваний: 128

Автор:  Surrogate [ 25 апр 2017, 08:25 ]
Заголовок сообщения:  Re: Непонятное поведение UserForm

lite.fun писал(а):
Необходимо мнение знающих людей по теме.
не могу назвать себя знающим по этой теме - я очень редко использую формы. И не использую рекордсеты совсем.
Запускал код в Visio 2010 - вроде надписи есть
Изображение
или не те ? зато вылетает ошибка. наверно Visio пытается достучаться до файла источника ?

Автор:  lite.fun [ 25 апр 2017, 08:49 ]
Заголовок сообщения:  Re: Непонятное поведение UserForm

Surrogate писал(а):
или не те ? зато вылетает ошибка

в MSDN я что-то не нашел, что рекордсеты можно по отдельности обновлять ?

Surrogate, текст в форме у вас правильный. Что-то я забыл приложить файл excel с исходными данными, прилагаю, для проверки и чистоты эксперимента.

Рекордсеты можно обновлять по отдельности, макрорекордер помог:
Код:
Application.ActiveDocument.DataRecordsets(index).Refresh

Собственно в моем случае сам скрипт в форме выполняется корректно и без проблем. А вот отображение текста после сохранения документа пропало ((
Изображение

Вложения:
-10,32 23.03.2017 для Олега.xls.7z [248.69 Кб]
Скачиваний: 60

Автор:  Surrogate [ 25 апр 2017, 08:55 ]
Заголовок сообщения:  Re: Непонятное поведение UserForm

lite.fun писал(а):
отображение текста после сохранения документа пропало
может в моднейшем Visio2016 так быстро происходит обновление, что текст на форме тупо не успевает подгрузиться ? Изображение

Автор:  lite.fun [ 25 апр 2017, 09:40 ]
Заголовок сообщения:  Re: Непонятное поведение UserForm

Surrogate писал(а):
lite.fun писал(а):
отображение текста после сохранения документа пропало
может в моднейшем Visio2016 так быстро происходит обновление, что текст на форме тупо не успевает подгрузиться ? Изображение

Хм, ну может и так конечно, сейчас промониторил, время выполнения у меня скрипта 2 сек. Хотя до сохранения и закрытия документа, примерно также и было, текст отображался.
А у Вас успевает на форме текст от 1 до 8 обновиться?

Автор:  Shishok [ 25 апр 2017, 09:43 ]
Заголовок сообщения:  Re: Непонятное поведение UserForm

Попробуй в процедуре UserForm_Activate() (для UserForm1) написать после строки:
Код:
Application.ActiveDocument.DataRecordsets(i).Refresh

строку:
Код:
Me.Repaint

Автор:  lite.fun [ 25 апр 2017, 09:48 ]
Заголовок сообщения:  Re: Непонятное поведение UserForm

Shishok писал(а):
Попробуй в процедуре UserForm_Activate() (для UserForm1) написать после строки:
Код:
Application.ActiveDocument.DataRecordsets(i).Refresh

строку:
Код:
Me.Repaint

Shishok, благодарю за помощь, все заработало! :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/