Vba 如何在vbscript中使用来自另一个用户窗体的对象?
我正在使用vbscript中的多个用户窗体 我正在一个userform中创建一个对象,并尝试在另一个userform中调用它。 我尝试在两个userforms中将该对象声明为Public,但仍然无法从另一个userform访问该对象 期待你的帮助 提前谢谢 用户表单1:Vba 如何在vbscript中使用来自另一个用户窗体的对象?,vba,userform,catia,Vba,Userform,Catia,我正在使用vbscript中的多个用户窗体 我正在一个userform中创建一个对象,并尝试在另一个userform中调用它。 我尝试在两个userforms中将该对象声明为Public,但仍然无法从另一个userform访问该对象 期待你的帮助 提前谢谢 用户表单1: Public Inner_V1 As Object Private Sub Inner_V1_CD_Click() 'Auswahlfenster ausblenden Input_sel
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
这里,internal_V1是我需要从Userform1使用的对象。向包含该对象的表单添加属性 例如 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
答案很简单,我只需要打电话给Userform1.internal_V1你是说VBA吗?在什么应用程序中?是的,我用VBA在CATIA中开发宏不确定CATIA,但在Excel VBA(以及通常的VBA)中,类和窗体中没有静态对象。您需要将全局变量放在一个单独的模块中。我也在主模块中将对象变量声明为public。但是我仍然无法访问objectUserForm2只是一个UserForm,如果它是一个承载Microsoft Forms的VBA环境(据推测是这样),那就好了。Alex谢谢你的回复。但是我不能理解你的代码。在Userform1中:我将一个对象声明为“Public object1 as object”,并设置一个值。我无法从Userform2获取它:这里我试图获取object1的值。我的示例使用了一个
集合
,用你的目标代替它。当我给。。。。“Set internal_V11=New Object”我收到一条错误消息“Expected:Identifier”您需要编辑您的问题并添加相关代码
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