Как использовать объект из другой формы пользователя в vbscript?

Я работаю с несколькими пользовательскими формами в vbscript.

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

Ждите вашей помощи.

Заранее спасибо.

Userform1:

        Public Inner_V1 As Object
        Private Sub Inner_V1_CD_Click()

 'Auswahlfenster ausblenden
  Input_selection2.Hide

'Dim myDoc As Document
Set myDoc = CATIA.ActiveDocument

On Error Resume Next

Set ActivePart = CATIA.ActiveDocument.Part

    If Err.Number <> 0 Then
        On Error GoTo 0
        Box = MsgBox("Das geöffnete Dokument ist kein CATPart!" + Chr(10) + "Das Makro wird beendet", vbExclamation, "Falscher Dateityp")
        Unload Input_selection2
        Exit Sub
    End If

' Selektion definieren und leeren ----
Dim UserSel As Object
Set UserSel = myDoc.Selection
UserSel.Clear
'-------------------------------------

' User wählt die Fläche aus #############################################################################

    ' Auswahl festlegen -------------------
    Dim Was1(0)
    Was1(0) = "HybridShape"
    '--------------------------------------

    Dim Auswahl                                         'Wird für die SelectElement2 Methode benötigt (Auswahl durch User)
    Auswahl = UserSel.SelectElement2(Was1, "Bitte die Fläche auswählen.", False)

    If Auswahl = "Normal" Then
        Set Inner_V1 = UserSel.Item(1).Value
        Inner_V1.Value = Inner_V1.Name
    Else
        Unload Input_selection2
        Exit Sub
    End If

    ' Selektion freigeben -----------------------------------------------------
    UserSel.Clear                           'User-Auswahl löschen

  'Auswahlfenster anzeigen
   Input_selection2.Show

   End Sub

Userform2:

           Private Sub Weiter_Click()

           Set hybridBodies1 = part1.HybridBodies

           Set hybridBody1 = hybridBodies1.Add()
           hybridBody1.Name = "test"

           Set reference1 = part1.CreateReferenceFromObject(Inner_V1)
           Set reference2 = part1.CreateReferenceFromObject(Guide_curve)

           Set sweep_v1 = hybridShapeFactory1.AddNewSweepExplicit(reference1, reference2)
           Set reference3 = part1.CreateReferenceFromObject(Support_V)

           hybridBody1.AppendHybridShape sweep_v1

           End Sub   

Здесь Inner_V1 - это объект, который мне нужно использовать из Userform1.


person user3714887    schedule 01.07.2015    source источник
comment
Вы имеете в виду VBA? В каком приложении?   -  person Alex K.    schedule 01.07.2015
comment
Да VBA Я использую для разработки макроса в CATIA   -  person user3714887    schedule 01.07.2015
comment
Не уверен в CATIA, но в Excel VBA (и в VBA в целом) нет статических объектов в классах и формах. Вам нужно поместить глобальные переменные в отдельный модуль.   -  person AnalystCave.com    schedule 01.07.2015
comment
Я также объявил объектную переменную общедоступной в основном модуле. Но все же я не могу получить доступ к объекту   -  person user3714887    schedule 01.07.2015


Ответы (2)


Добавьте Свойство в форму, содержащую объект.

E.g.

UserForm1

Private Sub UserForm_Click()
    Dim uf2 As UserForm2
    Set uf2 = New UserForm2

    uf2.Col.Add Now, "K"

    uf2.Show
End Sub

UserForm2

Private mCol As Collection

Private Sub UserForm_Initialize()
    Set mCol = New Collection
End Sub

Public Property Get Col() As Collection
    Set Col = mCol
End Property

Private Sub UserForm_Activate()
    MsgBox mCol("K")
End Sub
person Alex K.    schedule 01.07.2015
comment
UserForm2 - это просто UserForm, если это среда VBA, в которой размещены Microsoft Forms (как это предположительно), тогда все в порядке. - person Alex K.; 01.07.2015
comment
Алекс Спасибо за ответ. Но я не мог понять ваш код. В Userform1: я объявляю объект как Public object1 As Object и устанавливаю значение. Что я не могу получить Userform2: Здесь я пытаюсь получить значение object1. - person user3714887; 01.07.2015
comment
В моем примере используется Collection, замените его своим объектом. - person Alex K.; 01.07.2015
comment
Когда я даю .... Установите Inner_V11 = New Object, я получаю сообщение об ошибке Ожидается: Идентификатор - person user3714887; 01.07.2015
comment
Вам нужно будет отредактировать свой вопрос и добавить соответствующий код. - person Alex K.; 01.07.2015

Ответ прост: мне просто нужно вызвать Userform1.Inner_V1.

person user3714887    schedule 02.07.2015