2015-07-01 1 views
0

Я работаю с несколькими пользовательскими формами в 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.

+0

ли вы имеете в виду VBA? В каком приложении? –

+0

Да VBA Im использует для разработки макроса в CATIA – user3714887

+0

Не уверен в CATIA, но в Excel VBA (и в VBA вообще) нет статических объектов в классах и формах. Вам нужно разместить глобальные переменные в отдельном модуле. –

ответ

0

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

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 
+0

UserForm2 - это просто UserForm, если его среда VBA, на которой размещены Microsoft Forms (как и предполагалось), тогда это прекрасно. –

+0

Alex Спасибо за ваш ответ. Но я не мог понять ваш код. В Userform1: Я объявляю объект как «Public object1 As Object» и устанавливаю значение. Который я не могу получить Userform2: Здесь я пытаюсь получить значение объекта1. – user3714887

+0

В моем примере * используется 'Collection', замените это на свой объект. –