‹переменная объекта или переменная блока не установлена› Ошибка выполнения 91

Я создаю макрос, который автоматически создает диаграмму visio из электронной таблицы Excel, где диаграмма представляет соединения в строке в электронной таблице Excel. Я получаю эту ошибку, и я не могу выяснить причину, имейте в виду, что я достаточно неопытен в vba. Моя проблема возникает, когда я пытаюсь установить соединения между двумя уже размещенными объектами. чтобы снова вызвать эти объекты, я пытаюсь использовать их уникальные идентификаторы, но по какой-то причине я не могу преодолеть первое препятствие.

если есть какое-либо понимание, которое вы можете предложить, я был бы рад, простите за беспорядочный код!

    While Current_Row < Last_Row

    While current_object <= counter
        object = "Ellipse." & current_object


        Set ShpObj = AppVisio.ActivePage.Shapes(object)

        If ShpObj.Text = Worksheets("TempSheet").Cells(Current_Row, COLUMN2).Value Then

            While current_get <= counter
                object = "Ellipse." & current_get


                ShpObj2 = AppVisio.ActivePage.Shapes(object)

                If ShpObj2.Text = Worksheets("TempSheet").Cells(Current_Row, COLUMN2).Value Then

                    ShpObj2.AutoConnect ShpObj, visioAutoconnecDirRight, connector '(setting the color and label)

                    Set ShpObj2 = Nothing
                End If
                current_get = current_get + 1
            Wend
        End If

    current_object = current_object + 1
    current_get = 1


    Set ShpObj = Nothing
    Wend

Итак, это блок, который вызывает проблему, если вы хотите увидеть остальные модули, вы можете найти его в сообщении на форуме здесь http://visguy.com/vgforum/index.php?topic=4633.0


person Ben    schedule 27.02.2013    source источник


Ответы (1)


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

Попробуйте заменить строку

ShpObj2 = AppVisio.ActivePage.Shapes(object)

с участием:

Set ShpObj2 = AppVisio.ActivePage.Shapes(object)

person StoriKnow    schedule 27.02.2013
comment
Set ShpObj2 задается как публичная переменная в другом модуле, проблемы там не возникает, хотя возникает с первым ShpObj Set ShpObj = AppVisio.ActivePage.Shapes(object) - person Ben; 28.02.2013
comment
Хорошо, так в чем проблема? Есть ли исключение? - person StoriKnow; 28.02.2013
comment
когда весь макрос запускается, он переходит к коду выше, и возникает ошибка 91, и я не могу понять, почему все переменные, которые я использую, были публично объявлены в моем основном модуле, ошибка возникает в строке 4 кода выше, и я почти уверен он снова возникнет в строке 8, если сможет обойти это. то, что приведенный выше код должен делать, это получить текущую строку электронной таблицы и выполнить поиск по всем фигурам на листе, пока не найдет текст внутри фигуры = текст в ячейке, на которую он смотрит, а затем сделать то же самое снова но ищу текст в - person Ben; 28.02.2013
comment
если вы хотите увидеть другие модули, в случае возникновения проблемы в них, это на этом форуме visguy.com/vgforum/index.php?topic=4633.0 я также включил в файл, который я разместил здесь, пример электронной таблицы, соединения - это метка соединителя, а два набора имен - это объекты, которые нужно соединить - person Ben; 28.02.2013