All Forums
 Категория Visio
 Форум Вопросы и ответы
 Ошибка "Object required"
Author Previous Topic Topic Next Topic  

Евгений

88 Posts

Posted - 04/11/2005 :  18:39:00
Добрый всем вечер. Возникает странная ошибка - во время обращения к функции появляется данная ошибка - и совсем непонятно, почему.
Причем имеется другая похожая форма, в которой производится идентичное действие - и все протекает нормально.
Приведу часть кода в форме:
Function validate_data() as Boolean
    Dim newTable As Visio.Shape
    Set newTable = Module1.get_new_table
    Module1.setup_table tableName.Text, boxName.Text, Hld.Text, Owner.Text, active.Text
    If ThisDocument.tableUnique(newTable) Then
        validate_data = True
    Else
        MsgBox "Table data is not unique!"
        validate_data = False
    End If
        
End Function
Ошибка в линии "If ThisDocument.tableUnique...."
Функция tableUnique(shpJob as Visio.Shape) as Boolean определена в ThisDocument:
Public Function tableUnique(ByVal shpTable As Visio.Shape) As Boolean
    If InStr(shpTable.Name, "Table") Then
        counter = 0
        For Each shp In ActivePage.Shapes
            If InStr(Shape.Name, "Table") Then
                If shpTable.Cells("Prop.Table_name").Formula = shp.Cells("Prop.Table_name").Formula And _
                        shpTable.Cells("Prop.Box_name").Formula = shp.Cells("Prop.Box_name").Formula And _
                        shpTable.Cells("Prop.Hld").Formula = shp.Cells("Prop.Hld").Formula Then
                    counter = counter + 1
                End If
            End If
        Next
        If counter = 1 Then
            tableUnique = True
            Exit Function
        End If
    End If
    tableUnique = False
End Function
Сам объект newTable в ф-ии validate_data() определен - все правильно.
В чем может быть проблема?

brace

Russia
358 Posts

Posted - 04/12/2005 :  15:34:19
Errors can arise from a variety of situations. This section lists some common error situations and suggests ways of preventing them.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devref/HTML/DVS_15__Programming_Visio_with_VBa_766.asp
Go to Top of Page

asleep

8 Posts

Posted - 04/12/2005 :  16:44:34
используемый стиль не есть самый удачный для программирования - себе дороже
желательно выставить опцию для компилятора Require Variable Declaration
IDE тогда прописывает в начале создаваемых модулей Option Explicit
если проект создан то в старые модули нужно добавить эту строку руками
зачем делается можно почитать в хелпе
думаю что после компиляции с выставленной опцией проблемы решаться
на мой взгляд ошибка в этом куске кода
For Each shp In ActivePage.Shapes
If InStr(Shape.Name, "Table") Then
но в принципе могу и ошибаться ибо откуда беруться переменные не ясно

а суть ошибки на мой взгляд такова:
Shape - недекларированная переменная(видимо ввиду имелась shp)
если на странице нет элементов то программа отработает без ошибки
если элементы есть... интерпретатор встретится с непонятной для себя штукой
Go to Top of Page

Евгений

88 Posts

Posted - 04/14/2005 :  19:26:17
asleep, в этом Shape и была ошибка! Опечатка.

Кстати, а как делается Require Variable Declaration?
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)